需要从GCM迁移到FCM吗?

Pat*_*ick 45 android firebase google-cloud-messaging firebase-cloud-messaging

谷歌刚刚宣布谷歌云消息传递现在是Firebase云消息传递.这对GCM的现有用户意味着什么?需要哪些迁移(如果有的话)?

Rob*_*mar 107

什么是FCM,我们为什么要使用它?

FCM(Firebase云消息传递)是Firebase品牌下的新版Google云消息传递API.它具有GCM的所有功能以及一些附加功能.根据Firebase常见问题解答,它"继承了GCM的核心基础架构,使用新的SDK来简化云消息传递".谷歌解释了他们决定在他们的云消息常见问题解答中发布FCM ,他们写道:

Firebase以跨平台而闻名,因此FCM现在非常适合Firebase专为Android,iOS和移动网络设计的功能套件

Google建议在其适用于Android 发行说明的API中从GCM升级到FCM .Firebase常见问题解答中提供了这样做的原因:

升级到FCM SDK的好处包括:

  • 更简单的客户开发.您不再需要编写自己的注册或订阅重试逻辑.
  • 开箱即用的通知解决方案.您可以使用Firebase Notifications,这是一种带有Web控制台的无服务器通知解决方案,可让任何人根据Firebase Analytics洞察信息向目标特定受众群体发送通知.

GCM已被弃用吗?

GCM的某些功能已被弃用(例如,请参阅https://developers.google.com/cloud-messaging/android/legacy-regid),现在在未来几天内,GCM将完全弃用.谷歌说:

我们将继续支持当前版本的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的注册令牌. (6认同)
  • "是的GCM的一些功能已经被折旧"是误导性的,因为你所谈论的"功能"在FCM出现之前很久就被弃用(注意:不是"折旧").根据这个逻辑,您还可以说Android,iOS和其他所有软件产品的某些功能已经被弃用,因为某些版本的某些版本已被弃用. (3认同)

AL.*_*AL. 33

更新:最近通过电子邮件宣布GCM现已弃用,将于明年(2019年)完全删除,所有GCM用户都应开始迁移到FCM.有关详细信息,请参阅此处的答案.


除了Pritam Baral的回答之外,请注意FCM的核心由GCM本身组成.没有实际需要迁移到它,但鼓励它,因为迁移到FCM时,所有与它相关的功能都可以使用.在参考Firebase官方价格页面时,免费提供的功能包括:

分析,应用程序索引,身份验证,动态链接,FCM,邀请,通知,崩溃报告和远程配置

GCM和FCM常见问题解答中所述,预IO GCM实施在未来仍应运行更长时间:

我们将继续支持当前版本的GCM Android和iOS SDK,因为我们知道很多开发人员现在都在使用GCM SDK来处理通知,而客户端应用程序升级需要时间.

但是,所有新的客户端功能都将仅添加到FCM SDK中.强烈建议您升级到FCM SDK.


根据最近的亮点:

Firebase Cloud Messaging构建并改进了Google Cloud Messaging API.您可以继续使用com.google.android.gms.gcm使用Google Cloud Messaging,但我们建议您升级到com.google.firebase:firebase-messaging.