在APP服务器中创建FCM主题

时间:2017-03-09 11:32:02

标签: android firebase push-notification google-cloud-messaging firebase-cloud-messaging

最近我从GCM迁移到FCM以通过我的应用程序发送通知,我想知道是否能够从我的应用服务器订阅特定主题的成员。如果可能,那么如何确定特定成员令牌是否有效或过期。

因为在我的数据库中,我接近22L人GCM注册TOKEN ID,所以我将创建一个主题并通过我的应用服务器订阅这些成员。

解决此类问题的任何想法。

1 个答案:

答案 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"},
    {},
  ]
}