Firebase 实现消息推送

Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案,您可以使用它免费且可靠地传递消息和通知。

使用 FCM,您可以通知客户端应用存在可以同步的新电子邮件或其他数据。 您可以发送通知来重新吸引用户和促进用户留存。 对于即时通讯等用例,一条消息可以将最大 4KB 的负载传送至客户端应用。
已在使用 Google 云消息传递?请详细了解您的选项。

主要功能
通用消息定位
以三种方式中的任一种将消息分发至您的客户端应用 — 分发至单一设备、设备群组或订阅主题的设备。

数据消息和通知支持
传递不超过 2KB 的通知,不超过 4KB 的数据负载,以及发送带通知和数据负载的消息。

从客户端应用使用上游消息传递
通过 FCM 可靠而省电的连接通道,将确认消息、聊天信息及其他消息从设备发回至您的服务器。

如何工作?

Firebase 云消息传递体系结构图
一个 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 来响应传入消息。如需了解详情,请参阅从应用服务器发送消息的指南:
发送下游消息
发送主题消息
发送消息至设备群组
发送上游消息

请记住,您需要一个服务器实现才能充分利用这些功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容