需要从 GCM 迁移到 FCM?
Posted
技术标签:
【中文标题】需要从 GCM 迁移到 FCM?【英文标题】:Migration from GCM to FCM needed? 【发布时间】:2016-05-18 22:35:29 【问题描述】:Google 刚刚宣布 Google Cloud Messaging 现在更名为 Firebase Cloud Messaging。这对 GCM 的现有用户意味着什么以及需要进行哪些迁移(如果有)?
【问题讨论】:
【参考方案1】:什么是 FCM,我们为什么要使用它?
FCM(Firebase 云消息传递)是 Firebase 品牌下 Google Cloud Messaging API 的新改进版本。它具有 GCM 的所有功能以及一些附加功能。根据Firebase FAQ,它“继承了 GCM 的核心基础架构,使用新的 SDK 使云消息传递开发更容易”。 Google 在Cloud Messaging FAQ 中解释了他们发布 FCM 的决定,他们写道:
Firebase 以跨平台而著称,因此 FCM 现在非常适合为 android、ios 和移动网络设计的 Firebase 功能套件
Google 建议在其适用于 Android 的 API Release Notes 中从 GCM 升级到 FCM。这样做的原因在Firebase FAQ中给出:
升级到 FCM SDK 的好处包括:
更简单的客户端开发。您不再需要编写自己的注册或订阅重试逻辑。 开箱即用的通知解决方案。您可以使用 Firebase Notifications,这是一种带有 Web 控制台的无服务器通知解决方案,任何人都可以根据 Firebase Analytics 见解向特定受众发送通知。
GCM 是否已弃用?
GCM 的某些功能已被弃用(例如,请参阅 https://developers.google.com/cloud-messaging/android/legacy-regid),现在在未来几天内将完全弃用 GCM。 Google says:
我们将继续支持当前版本的 GCM Android 和 iOS SDK,因为我们知道现在很多开发者都在使用 GCM SDK 来处理通知,而客户端应用升级需要时间。
但所有新的客户端功能都将被添加到 FCM SDK 中,只有在未来才会如此。强烈建议您升级到 FCM SDK。
如何将旧的 Android 应用程序从 GCM 更新到 FCM
来自https://developers.google.com/cloud-messaging/android/android-migrate-fcm:
将您的 GCM 项目作为 Firebase 项目导入:
在 Firebase 控制台中,选择导入 Google 项目。
从现有项目列表中选择您的 GCM 项目,然后选择 添加 Firebase。
在 Firebase 欢迎屏幕中,选择将 Firebase 添加到您的 Android 应用。
提供您的包名称和 SHA-1,然后选择添加应用程序。一个新的 已下载 Firebase 应用的 google-services.json 文件。
选择继续并按照详细说明添加 Android Studio 中的 Google 服务插件。
【讨论】:
“是的,GCM 现在已贬值。请参见此处”这是不正确的。 GCM 尚未被弃用。您链接到的是一个较旧的 GCM API,该 API 在 2015 年被弃用,支持使用 InstanceID 获取 GCM 的注册令牌。 “是的,GCM 的某些功能已经过折旧”具有误导性,因为您所说的“功能”早在 FCM 出现之前就已被弃用(注意:不是“折旧”)。根据这个逻辑,您也可以说 Android、iOS 和所有其他软件产品的某些功能已被弃用,因为某些版本已弃用。 @RobiKumarTomar 您说它具有 GCM 的所有功能,但是当应用程序在后台处理传入消息时,找不到任何方法:s @KoenVanLooveren 请阅读此firebase.google.com/docs/cloud-messaging/concept-options。 是的,我又知道了,你不能为后台的传入消息编写自己的实现,它们总是立即进入系统托盘,如果我想向所有人发送消息怎么办用户激活禁用的功能,系统托盘中总会有通知,而不是粉丝!【参考方案2】:更新:最近通过电子邮件宣布 GCM 现已弃用并将在明年(2019 年)完全删除,所有 GCM 用户都应开始迁移到 FCM。更多详情请看我的回答here。
除了Pritam Baral's answer,注意FCM的核心是由GCM本身组成的。没有实际需要迁移到它,但鼓励这样做,因为当迁移到 FCM 时,与之相关的所有功能都将可供使用。当提到Firebase Official Pricings Page时,免费包含的功能是:
分析、应用索引、身份验证、动态链接、FCM、邀请、通知、崩溃报告和远程配置
如GCM and FCM FAQs 中所述,未来 IO 之前的 GCM 实现仍应能工作更长的时间:
我们将继续支持当前版本的 GCM Android 和 iOS SDK,因为我们知道现在很多开发者都在使用 GCM SDK 来处理通知,而客户端应用升级需要时间。
但所有新的客户端功能都将添加到 FCM SDK 中。强烈建议您升级到 FCM SDK。
根据最近的highlights:
Firebase 云消息传递基于并改进了 Google 云消息传递 API。您可以通过 com.google.android.gms.gcm 继续使用 Google Cloud Messaging,但我们建议将 upgrading 转至 com.google.firebase:firebase-messaging。
【讨论】:
但是您无法使用 Firebase Cloud Messaging 处理后台消息,或者这可能吗? 如果这是仅数据消息,则可能。我还没有找到的是如何让我的应用在应用未运行时处理 FCM 通知(比如广播接收器) @NannuoLei 不运行是指后台状态还是杀死状态? @AL。我的意思是死亡状态。后台应用程序可能仍会运行 afaik。 @NannuoLei 也许我的回答here 可以让您了解死亡状态下的 GCM/FCM。另外,我在某处读到使用 START_STICKY 标志可能会有所帮助。在社区里搜索一下,这种查询很常见,比如one。【参考方案3】:云基础架构将大部分保持不变,因此现有的 GCM 应用应该可以继续正常运行。虽然我还没有发现任何关于 Google 的弃用政策的提及,但 Google 破坏现有的 GCM 基础架构/SDK/代码是不寻常的(而且他们没有理由)。
FCM 似乎是 GCM 的更好版本,可在多个平台(甚至网络!)上使用,并且设置更简单(与 GCM 相比)。迁移指南适用于 Android 和 iOS
【讨论】:
如果您想迁移,这是官方指南:developers.google.com/cloud-messaging/android/…【参考方案4】:Google 已扩展 GCM 以将消息发送到 Android 以外的多个平台:iOS 和 Chrome。 Firebase 以跨平台着称,因此 FCM 现在与专为 Android、iOS 和移动网络设计的 Firebase 功能套件完美契合。
FCM
它是 GCM 的高级/改进版本,但使用了新品牌 Firebase 非常简单/简化的客户端开发 无服务器控制台,任何人都可以将通知发送到特定设备 通知负载:4KB,消息负载:2KB。请注意,通知还包括设备和应用信息。 如果设备处于离线状态,每台设备会存储 100 条通知/消息。【讨论】:
【参考方案5】:Firebase 云消息传递 (FCM) 是 GCM 的新版本。它继承 可靠且可扩展的 GCM 基础架构,以及新功能!看 常见问题解答以了解更多信息。如果您要在新应用中集成消息传递, 从 FCM 开始。强烈建议 GCM 用户升级到 FCM, 以便从现在和未来的新 FCM 功能中受益。
FCM 是 Firebase 品牌下的新版 GCM。它继承了 GCM 的核心基础架构,以确保我们继续在 Android、iOS 和 Chrome 上可靠地传递消息。
是的,GCM 的某些功能已被弃用,但它们支持所有以前的客户端。
要从 GCM SDK 升级到 FCM SDK,请参阅迁移指南Android欲了解更多信息。https://developers.google.com/cloud-messaging/faq
【讨论】:
“是的 GCM 已弃用”来源? GCM 的某些功能已弃用以上是关于需要从 GCM 迁移到 FCM?的主要内容,如果未能解决你的问题,请参考以下文章
Android APP 从 GCM 迁移到 FCM。旧 GCM 令牌不起作用