Firebase Cloud Messaging
Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案,您可以使用它免费且可靠地传递消息和通知。
使用 FCM,您可以通知客户端应用存在可以同步的新电子邮件或其他数据。 您可以发送通知来重新吸引用户和促进用户留存。 对于即时通讯等用例,一条消息可以将最大 4KB 的负载传送至客户端应用。
已在使用 Google 云消息传递?请详细了解您的选项。
主要功能
通用消息定位
以三种方式中的任一种将消息分发至您的客户端应用 — 分发至单一设备、设备群组或订阅主题的设备。
数据消息和通知支持
传递不超过 2KB 的通知,不超过 4KB 的数据负载,以及发送带通知和数据负载的消息。
从客户端应用使用上游消息传递
通过 FCM 可靠而省电的连接通道,将确认消息、聊天信息及其他消息从设备发回至您的服务器。
如何工作?
一个 FCM 实现包括您的环境中的一个应用服务器(通过 HTTP 或 XMPP 协议与 FCM 交互)和一个客户端应用。 此外, FCM 还包括 通知控制台,您可以使用此控制台将通知发送至客户端应用。Firebase Notifications 基于 Firebase Cloud Messaging 构建并为客户端开发使用相同的 FCM SDK。 要测试或通过强大的内置定向与 Analytics 发送营销或互动消息,您可以使用 Notifications。 对于具有更复杂消息传递要求的部署, FCM 是正确选择。
设置 Firebase Cloud Messaging
要编写您的 Firebase Cloud Messaging Android 客户端应用,请使用 FirebaseMessaging
API 和 Android Studio 1.4 或更高版本及 Gradle。本页面中的说明假设您已完成将 Firebase 添加到您的 Android 项目的步骤。
FCM客户端需要运行 Android 2.3 或更高版本的设备,且这些设备安装了 Google Play 商店应用,或者需要运行 Android 2.3 及 Google API 的模拟器。请注意,您并非只能通过 Google Play 商店部署您的 Android 应用。
设置 Firebase 和FCM SDK
如果尚未添加,请将 Firebase 添加至您的 Android 项目。
在 Android Studio 中,将 FCM 依赖项添加至您的应用级 build.gradle 文件:
dependencies { compile 'com.google.firebase:firebase-messaging:9.6.1'}
编辑您的应用清单
将以下内容添加至您应用的清单中:
一项可以扩展 FirebaseMessagingService
的服务。如果您希望在后台进行接收应用通知之外的任何消息处理,则必须添加此服务。要在前台应用中接收通知、接收数据负载以及发送上游消息等,您必须扩展此服务。
一项可以扩展 FirebaseInstanceIdService
的服务,用于处理注册令牌的创建、轮转和更新。如果要发送至特定设备或者创建设备群组,则必须添加此服务。
如果FCM对于 Android 应用的功能至关重要,应确保在清单中设置 android:minSdkVersion="8"
或更高版本。这可确保 Android 应用无法安装在其不能正常运行的环境中。
例如:
检查 Google Play 服务 APK
依靠 Play 服务 SDK 运行的应用在访问 Google Play 服务功能之前,应始终检查设备是否拥有兼容的 Google Play 服务 APK。建议在以下两个地方进行检查:在主 Activity 的 onCreate()
方法中,以及在其 onResume()
方法中。在 onCreate()
中检查可确保该应用在检查未成功之前无法使用。在 onResume()
中检查可确保如果用户通过某些其他方式返回正在运行的应用(比如通过返回按钮),检查仍将继续进行。如果设备没有兼容的 Google Play 服务 APK,您的应用可以调用 GooglePlayServicesUtil.getErrorDialog()
以允许用户从 Google Play 商店下载此 APK,或在设备的系统设置中启用它。有关代码示例,请参阅设置 Google Play 服务。
获取设备注册令牌
初次启动您的应用时,FCM SDK 会为客户端应用实例生成注册令牌。如果您希望针对单一设备,或者创建设备群组,您将需要获取此令牌。
您可以通过扩展 FirebaseInstanceIdService
来获取令牌的值。确保已将服务添加至您的清单中,然后在 onTokenRefresh
上下文中调用 getToken
,并记录下面显示的值:
每次生成新的令牌时,onTokenRefresh
回调都会触发,因此,在上下文中调用 getToken
可以确保您访问当前可用的注册令牌。如果尚未生成令牌,FirebaseInstanceID.getToken()
将返回 null。
获取令牌后,您可以将其发送至您的应用服务器。有关 API 的完整详情,请参阅 Instance ID API 参考。
后续步骤
设置客户端应用后,即可开始使用 Firebase 控制台发送下游消息和使用 Firebase 控制台发送主题消息。快速入门示例演示了此功能,您可以下载、运行和查看快速入门示例。
要向您的应用添加其他更高级的行为,您可以声明 Intent 过滤器和实现 Activity 来响应传入消息。如需了解详情,请参阅从应用服务器发送消息的指南:
发送下游消息
发送主题消息
发送消息至设备群组
发送上游消息
请记住,您需要一个服务器实现才能充分利用这些功能。