当前位置: 首页 > 知识库问答 >
问题:

平稳的GCM到FCM过渡

秦宏盛
2023-03-14

有人有这方面的经验吗?我正在研究迁移,但是由于我们已经用GCM发布了应用程序,每天有成千上万的用户和成千上万的通知,我不愿意这样做,因为担心会破坏现有的服务。有人顺利过渡了吗?

具体来说,在教程中(https://developers.google.com/cloud-messaging/android/android-migrate-fcm)第一步是“导入谷歌项目”。这是单向操作吗?现有的GCM服务器解决方案和部署的GCM应用程序能否继续工作?

还是最好创建一个新项目,并在GCM部署的应用程序被淘汰之前维护两个服务器解决方案?

共有2个答案

郎成龙
2023-03-14

首先,在FCM中有很多事情需要注意。

主要问题:

  1. 应用程序处于后台或被终止时显示白色通知图标
  2. 应用程序在多次打开和关闭后挂起

阅读以下问题以做出决定:

  • Firebase推送通知更新DB
  • https://stackoverflow.com/a/37626817/1507602
  • 在Firebase后台应用时如何处理通知
  • 升级到Google Play Services 9.0.0后,应用程序挂在DynamiteModulesC中
  • 使用新的Firebase Cloud消息传递系统的通知图标
卢聪
2023-03-14

将您的Google项目导入Firebase是一种单向操作,但这不是破坏性操作,您当前的项目将打开所需的API,并生成必要的API密钥以供Firebase使用,但如果您决定不继续使用Firebase,您仍然可以从Google开发者控制台管理该项目。

您目前的服务器解决方案将一如既往地工作。我会将您的项目导入Firebase。这将比将您的后端迁移到新项目容易得多。

注:

  • 如果您在设备ID中使用了InstanceID前令牌,那么它们在Firebase控制台或主题中都不起作用。因此,您必须维护一个映射,以确定您可以使用Firebase控制台和/或主题发送到哪些用户。如果您使用带有InstanceID的GCM,那么没有什么可做的,因为FCM也使用InstanceID。您可以使用FCM REST API发送到所有令牌、InstanceID或InstanceID前。
  • 确保不要在同一个客户端应用中使用GCM和FCM库。您可以在生成令牌和处理接收的消息时发现问题。
 类似资料:
  • 我有一些项目,与GCM一起发送网络推送(https://curiosity-driven.org/push-notifications),使用从浏览器/用户收集的令牌/endpoint。 但在Firebase中,我们还需要一些p256dh和身份验证密钥来发送通知。有没有办法从现有(旧)GCM令牌/endpoint获取这些密钥?

  • 我希望这段代码能有效地提高方向间转换的平滑度(一次只能使用一个键),这样我就可以使用多个键。问题是,每当我改变方向,“玩家”就会停下来,然后继续朝新的方向前进。我想让“玩家”在两个方向之间平稳过渡,而不必在按下新键之前完全释放活动键。 主要代码: 玩家等级代码: 提前谢谢!

  • 我试着在处理过程中创建平滑的运动,但它现在不起作用,我不知道为什么它不起作用。我是一名编程初学者,所以在解释时不要让我觉得太复杂:)。这个角色现在移动非常缓慢,我不能同时按下多个按钮,如果有人能帮助我,那就太好了。提前谢谢你。 这是主代码页

  • 有没有办法限制Firebase推送通知注册?不寻找主题。假设我有一个登录函数。我希望登录用户订阅推送通知。然后令牌可以被发送到服务器并存储。 在用户注销的同时,还应注销用户。 那么,目前是否有可用的机制?我查阅了Firebase API文档,但没有找到任何相关内容。 只是想知道我是否错过了什么。

  • 我正在写一个程序,让小“鸟”四处移动并跟随你的光标。这些实例不旋转或任何花哨的东西,我有一个非常不寻常的问题。 如果实例位于同一个X级或Y级,它会振荡。我以前遇到过边界和运动的问题,所以我尝试采取类似的方法。 只有当两个版本同时运行时,移动才会平滑。我尝试过重新排列' 这个代码中有没有我可以删除的部分来阻止它重复出现? 谢谢:)

  • 我曾经将我的另一个应用程序从GCM升级到FCM,当用户已经在他们的设备上安装了该应用程序时,他们在迁移后第一次打开时,我假设他们得到的FCM令牌与原来的GCM令牌不同(对不起,我不是很确定,这是很久以前的事了)。在该应用程序中,FCM版本为11.8.0。 现在在我当前的迁移应用程序中,我正在从GCM迁移到最新的FCM版本,它是17.3.4。当我试图只是复制和粘贴我的代码时,我发现我需要做一些安排。