GCM 到 Firebase - 服务器端迁移和 batchAdd API

GCM to Firebase - server side migration and batchAdd API

我有一个应用程序,到目前为止,它一直在为 Android 使用纯 GCM 集成,为 iOS 使用纯 APNS 集成。客户端应用程序注册推送通知服务并将注册令牌发送回我的服务器,我可以使用它来发送有针对性的消息。这是现有的系统。 现在我已经将我的 GCM 项目导入到 Firebase 中,并将 Android 和 iOS 应用程序配置添加到项目中。这样,我就可以在我的应用程序的下一版本中集成 Firebase SDK 并使用增强的通知功能。

下一步是更改后端实现并使用 Firebase 控制台发送通知。 Instance ID batchImport API 真的很简单,我从数据库中获取了 APNS 令牌,然后 API 返回了注册令牌。我在 Firebase 中将其用于单个设备并触发了通知。我什至可以将此令牌订阅到我想要的主题。

但现在我正尝试在 Firebase 控制台中使用 Android GCM 注册令牌,没有错误,但未触发通知。当我尝试使用 batchAdd 订阅主题时,我收到了以下带有 HTTP 响应 400 的输出。

{
  "error": "InvalidTokenVersion"
}

我没有找到关于此错误以及如何更正错误的任何文档。我使用的令牌完全有效,因为我可以通过旧的 GCM 服务器代码使用相同的令牌触发通知。

GCM 令牌看起来像这样

APA91bE_uLJ4dyXXXXX_Tn2qbCWgzCW4GR6t78_z-Up_gSdX7tekiSKWmXXXXXwSainHPTz5hQ6XM8F-j3XLKZuIUgNM84v_XXXXXeJ1pX_YBTn5OUNnZte2uSSisLBqQwCPGYXXXXXX

导入APNS token后生成的新token,token长度有差异,其他没找到。

cUt0RhCYXXX:APA91bG5JraXXXXX1M2lFHjzw_XXXXXg2qGQZ_iUDjoaXXXXXw4vv0JND24-4hj5ppvsXXXXXV4WWgNsurteN_nXXXXXi3SfzjBXZt5X00PXzhb3XXXXXlf_WDVxoIvkXXXXXRd2Rw1

GCM 库包含 2 个不同的 APIs 来生成 GCM 令牌:

GoogleCloudMessaging.register() // Deprecated in 2015
InstanceID.getToken()

不幸的是,主题 API 不支持第一个 API 生成的标记(在 GCM 和 FCM 中)。

BathAdd API 是 InstanceId / 主题的一部分 API。

我知道这并不理想,遗憾的是最好的选择是更新应用程序以使用 GCM InstanceId.getToken() 或 FCM。