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