【发布时间】:2017-09-04 14:22:12
【问题描述】:
我有一个应用程序,到目前为止,它对 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令牌后生成新令牌,令牌长度有差异,其他找不到。
cUt0RhCYXXX:APA91bG5JraXXXXX1M2lFHjzw_XXXXXg2qGQZ_iUDjoaXXXXXw4vv0JND24-4hj5ppvsXXXXXV4WWgNsurteN_nXXXXXi3SfzjBXZt5X00PXzhb3XXXXXlf_WDVxoIvkXXXXXRd2Rw1
【问题讨论】:
-
嗨阿什什。澄清一下,您是否在收到
InvalidTokenVersion错误时使用了 new 令牌? -
我正在使用我现有的 GCM 注册令牌。如果 FCM 需要不同版本的令牌,则必须有一种方法将现有的 reg 令牌转换为新版本的 FCM 兼容令牌,就像我们导入 APNS 令牌一样。
-
您能发布一个令牌的示例格式吗? AFAIK,旧令牌(最新的 GCM 版本)应该与 FCM 兼容。但是,如果您的令牌是使用较旧的 GCM 方法(如
.register())生成的,我认为您必须更新您的实现(可能使用 FCM)以生成令牌的更新版本(参见 here --我在这个答案中提出了一个问题,但看起来它与已弃用的 GCM 版本不兼容。 -
@AL。向问题添加了令牌格式
-
@AL。但我的问题是我将不得不等待并发布集成了兼容 FCM SDK 的应用程序的新版本,并等待我的所有用户进行版本更新,而不是每个人都更新。导入现有的工作 GCM 令牌并获得新的工作 FCM 兼容令牌应该是直截了当的。如果可以使用由 iOS 管理的完全不同格式的 APNS 进行导入,那么为 Google 自己的令牌执行此操作似乎是合乎逻辑的,一定有办法做到这一点。
标签: firebase google-cloud-messaging firebase-cloud-messaging firebase-notifications