我有一个应用程序,到目前为止使用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
答案 0 :(得分:1)
GCM库包含2个不同的API来生成GCM令牌:
GoogleCloudMessaging.register() // Deprecated in 2015
InstanceID.getToken()
不幸的是,主题API(GCM和FCM都不支持)使用第一个API生成的令牌。
BathAdd
API是InstanceId / Topics API的一部分。
我理解这不太理想,遗憾的是最好的选择是更新应用程序以使用GCM InstanceId.getToken()或FCM。