当针对多个 registration_id 时,FCM 返回单个注册 ID 的响应

Posted

技术标签:

【中文标题】当针对多个 registration_id 时,FCM 返回单个注册 ID 的响应【英文标题】:FCM returning response for single registration id when targeted for multiple registration_ids 【发布时间】:2016-07-13 06:03:52 【问题描述】:

我正在编写 FCM 实现的应用服务器端,它将向多个设备发送特定消息。

我使用registration_ids 作为键,JsonArray 使用多个收件人,但是返回的响应仅显示一个收件人,如下所示

"multicast_id":7185150746202793615,"success":0,"failure":1,"canonical_ids":0,"results":["error":"InvalidRegistration"]

我不确定是否在 Firebase 控制台中设置任何属性以启用多个注册 ID 接受。

下面是请求json

  
   "registration_ids":[  
      [  
         "eU6HKx7QRMc:APA91bEIoJtHmTFz_MzUgbMkoZvwdlXzrMDbCB1via_fV16MRF_Xc0C0KkkVA1diR8QgzRdQtkCy-6JDd5it_NSaiIbIlBDDi0g2GFkmrE4ESMi43dBODBePQrzFLqiKeDmX26DkXB8i",
         "FERTeU6HKx7QRMc:APA91bEIoJtHmTFz_MzUgbMkoZvwdlXzrMDbCB1via_fV16MRF_Xc0C0KkkVA1diR8QgzRdQtkCy-6JDd5it_NSaiIbIlBDDi0g2GFkmrE4ESMi43dBODBePQrzFLqiKeDmX26DkXB8i"
      ]
   ],
   "notification":  
      "title":"Hello FCM",
      "text":"Notification details"
   ,
   "time_to_live":3600,
   "priority":"HIGH"

这个请求的响应是

  
   "multicast_id":7697036511101523125,
   "success":0,
   "failure":1,
   "canonical_ids":0,
   "results":[  
        
         "error":"InvalidRegistration"
      
   ]

【问题讨论】:

返回的响应只显示给一个收件人你为什么这么认为? 返回的结果只有一个响应(size=1),成功和失败的总和也是1。 能否请您发布您从服务器端发送推送通知的代码? @Dhruv,我使用 Java 作为服务器端语言。 【参考方案1】:

问题在于这个请求的 Json 格式。应该是

  
       "registration_ids"[ "eU6HKx7QRMc:APA91bEIoJtHmTFz_MzUgbMkoZvwdlXzrMDbCB1via_fV16MRF_Xc0C0KkkVA1diR8QgzRdQtkCy-6JDd5it_NSaiIbIlBDDi0g2GFkmrE4ESMi43dBODBePQrzFLqiKeDmX26DkXB8i",
             "FERTeU6HKx7QRMc:APA91bEIoJtHmTFz_MzUgbMkoZvwdlXzrMDbCB1via_fV16MRF_Xc0C0KkkVA1diR8QgzRdQtkCy-6JDd5it_NSaiIbIlBDDi0g2GFkmrE4ESMi43dBODBePQrzFLqiKeDmX26DkXB8i" ],
       "notification":  
          "title":"Hello FCM",
          "text":"Notification details"
       ,
       "time_to_live":3600,
       "priority":"HIGH"
    

额外的方括号 ([ ]) 导致了问题。

【讨论】:

以上是关于当针对多个 registration_id 时,FCM 返回单个注册 ID 的响应的主要内容,如果未能解决你的问题,请参考以下文章

使用无效注册 ID 时 GCM 返回 BAD 请求

“registration_ids”字段不能为空(laravel 和 Firebase)

有效载荷 4096 字节是不是包含registration_id 长度?

谷歌云消息:registration_ids 与设备组

如何在数据库中注册Registration_Id?

如何获取 FCM-Django 推送通知的 registration_id (flutter app)