最近我从GCM迁移到FCM以通过我的应用程序发送通知,我想知道是否能够从我的应用服务器订阅特定主题的成员。如果可能,那么如何确定特定成员令牌是否有效或过期。
因为在我的数据库中,我接近22L人GCM注册TOKEN ID,所以我将创建一个主题并通过我的应用服务器订阅这些成员。
解决此类问题的任何想法。
答案 0 :(得分:1)
您可以使用Instance ID API通过您的应用服务器将多个令牌订阅到主题,具体来说,使用batchAdd
。它还可以通过返回NOT_FOUND
错误来识别您订阅的注册令牌是否无效。来自文档:
管理多个应用实例的关系图
使用Instance ID服务的批处理方法,您可以执行app实例的批量管理。例如,您可以向FCM或GCM主题执行批量添加或删除应用程序实例。要管理应用程序实例,请在此端点调用Instance ID服务,在JSON正文中提供应用程序实例令牌:
https://iid.googleapis.com/iid/v1:batchAdd https://iid.googleapis.com/iid/v1:batchRemove
参数
- 授权:key = YOUR_API_KEY。在标题中设置此参数。
- to:主题名称。
- registration_tokens:您要添加或删除的应用实例的IID令牌数组。
结果
成功时,调用返回HTTP状态200.空结果表示成功订阅令牌。对于失败的订阅,结果包含以下错误代码之一:
- NOT_FOUND - 已删除注册令牌或已卸载应用程序。
- INVALID_ARGUMENT - 提供的注册令牌对发件人ID无效。
- INTERNAL - 后端服务器由于未知原因而失败。重试请求。
- TOO_MANY_TOPICS - 每个应用实例的主题数量过多。
POST请求示例
https://iid.googleapis.com/iid/v1:batchAdd Content-Type:application/json Authorization:key=API_KEY { "to": "/topics/movies", "registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O...", "1uoasi24:9jsjwuw...", "798aywu:cba420..."], }
示例结果
HTTP 200 OK { "results":[ {}, {"error":"NOT_FOUND"}, {}, ] }