从 GCM 注销并在 FCM 上注册

Unregister from GCM and register on FCM

我的 android 应用程序使用 GCM 和 urbanairship 进行推送通知。

现在 Google 已弃用 GCM,并建议切换到 FCM。

问题是我无法访问用于设置 GCM 的 Google 帐户,因为它是使用已离开的开发人员帐户之一设置的。所以我无法按照迁移教程中的说明从 GCM 迁移到 FCM。

在这种情况下,如何使用不同的 Google 帐户切换到 FCM,同时记住我使用的是 urbanairship? 我想保留注册令牌,或者在不要求客户卸载并重新安装应用程序的情况下更换它们。

当我向下滚动更新时,该应用程序是否可能向 FCM 注册自身?

The problem is I don't have access to the Google account which was used to set up GCM as it was set up using one of the developers account who has left.

这种情况并不少见。我建议就 GCM 项目联系 Google Support。您最好能访问当前项目,特别是如果您是 managing/using 它。

获得访问权限后,您可以根据需要将其迁移到 Firebase。

In this scenario, how can I switch to FCM using a different Google account keeping in mind that I use urbanairship?

您不能切换到其他帐户。但是,您可以修改您的应用程序以接收来自不同项目的消息。我以前没有使用过 UrbanAirship,但是 AFAIK,如果他们在他们的服务下使用 GCM,那么他们也应该处理 FCM 迁移部分。

Is it possible that the app registers itself with FCM when I roll down an update?

为了注册,一个应用程序需要调用getToken()。所以从技术上讲,是的。但是您必须处理 pairing/saving 相应用户的令牌。

综上所述,我强烈建议您先联系 Google 支持人员。

这是 FCM Urban Airship migration guide. 假设您能够恢复您的 GCM 帐户,您只需按照该指南使用您现有的发件人 ID 即可。如果您更改帐户,则必须在 Urban Airship 仪表板中配置新的 FCM 项目 API 密钥。 SDK 将使用新的注册令牌自动更新所有频道。过渡期间,只有更新后的设备才能接收推送。

我是这样解决问题的:
1. 创建了一个新的 Google FCM 帐户。
2. 使用来自新 Google FCM 帐户的密钥在 Urbanairship 控制台中创建了一个新项目。
3. 更新后端代码以发送两次通知 - 一次用于旧的 urbanairship 项目,一次用于新项目。在两次尝试中,一次肯定会失败,一次肯定会成功,因为客户将使用该应用程序的两个版本之一。
4. 使用旧版本应用程序的客户将拥有旧 urbanairship 项目可用的注册令牌。使用新版本应用程序的客户将获得新 urbanairship 项目可用的注册令牌。
5. 当客户更新应用程序时,urbanairship 负责使用新的 FCM 帐户服务器注册令牌。我不必在这里做任何事情。这不是预期的,因为令牌是在全新安装时更新的,而不是在更新期间更新的。

总结一下:
UA Project Old -> Google GCM -> Device with old app version UA 项目新建 -> Google FCM -> 具有新应用程序版本的设备