【问题标题】:Sending Push Notification to Multiple GCM Ids returning error: MISSING_REGISTRATIONS向多个 GCM Id 发送推送通知返回错误:MISSING_REGISTRATIONS
【发布时间】:2015-07-01 09:04:51
【问题描述】:

我正在使用谷歌云消息向多个设备发送推送通知。以下是我发送的 JSON 数据:

{"to":["APA91bHMvoTuEYQAGwgB7Q-Em8j4DyZOrGXZJ9uTyFhddojDFHr0VeZUHAEgw_kk6QFmKQoWe6oN2fIgDAw9AoPigCqZ4BaMlNzxqWoBRx6Q3ZBBKTinzqUj8F7BEA5ZHmCIArsEB3zT","APA91bE4mP2TscsMf4IJT9-o70YSFPMo34NGGG4IXS4Oe9uuHawxTGplqd017NiGXC5ftlIUaXIIkI60nR7w5GI1UPy5IdqYDPt0_C1TW5S5o1zaGKfv9CKtb6CV3cDc1cvEKyCeMwUe3NZpX4UmhIGJfEmetQUNgg","APA91bHwfnK5l6CbHe_2SddBSHPJmuOxI0AapbyXAbuMVktFIICJx6WTu44ElkuxoBd70rsmdrdGSV7r9hDFvW-cBynunqOJAhI8PhKjDd2hINU91vP4_6yWRtRN2PYCXwkhkKxORrPcMi7pezt8FGhmynznIJpW9A"],"delay_while_idle":true,"collapse_key":"sample","delivery_receipt_requested":true,"data":{"message":"Stuffed Aloo Curry with Gatta Pulao by Chef Shelly","title":"Today's Special","request_type":"promotion"},"message_id":"m-313e76a8-b42c-4a8c-a1d4-ad58a059494a","time_to_live":10000}

我无法发送推送消息,我收到以下消息作为回报

<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"></success>
<iq id='e0nLC-0' type='result'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>170453453515@gcm.googleapis.com/SmackAA9F4121</jid></bind></iq>
<iq id='e0nLC-1' type='result'></iq>
<message><gcm xmlns="google:mobile:data">{&quot;message_id&quot;:&quot;m-313e76a8-b42c-4a8c-a1d4-ad58a059494a&quot;,&quot;from&quot;:&quot;&quot;,&quot;error_description&quot;:&quot;InvalidJson: MISSING_REGISTRATIONS : Missing \&quot;to\&quot; field\nJSON_TYPE_ERROR : Field \&quot;to\&quot; must be a JSON java.lang.String: [\&quot;APA91bHMvoTuEYQAGwgB7Q-Em8j4DyZOrGXZJ9uTyFhddojDFHr0VeZUHAEgw_kk6QFmKQoWe6oN2fIgDAw9AoPigCqZ4BaMlNzxqWoBRx6Q3ZBBKTinzqUj8F7BEA5ZHmCIArsEB3zT\&quot;,\&quot;APA91bE4mP2TscsMf4IJT9-o70YSFPMo34NGGG4IXS4Oe9uuHawxTGplqd017NiGXC5ftlIUaXIIkI60nR7w5GI1UPy5IdqYDPt0_C1TW5S5o1zaGKfv9CKtb6CV3cDc1cvEKyCeMwUe3NZpX4UmhIGJfEmetQUNgg\&quot;,\&quot;APA91bHwfnK5l6CbHe_2SddBSHPJmuOxI0AapbyXAbuMVktFIICJx6WTu44ElkuxoBd70rsmdrdGSV7r9hDFvW-cBynunqOJAhI8PhKjDd2hINU91vP4_6yWRtRN2PYCXwkhkKxORrPcMi7pezt8FGhmynznIJpW9A\&quot;]&quot;,&quot;error&quot;:&quot;INVALID_JSON&quot;,&quot;message_type&quot;:&quot;nack&quot;}</gcm></message>

如果我使用单个 gcmId 作为字符串发送推送,它工作正常。但如果我将它发送到 gcmIds 列表,我会收到错误响应:

"MISSING_REGISTRATIONS : 缺少 \"to\" 字段\nJSON_TYPE_ERROR : 字段 \"to\" 必须是 JSON java.lang.String"

【问题讨论】:

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


    【解决方案1】:

    在发送多个注册 ID 时,您应该使用旧的“registration_ids”参数而不是“to”。

    to - 此参数指定消息的收件人。价值 必须是注册令牌或通知密钥。

    registration_ids - 此参数指定设备列表 (注册令牌或 ID)接收多播消息。它必须 包含至少 1 个且最多 1000 个注册 ID。组播 允许使用消息(发送到 1 个以上的注册 ID) 仅限 HTTP JSON 格式。

    (Source)

    还提到了here

    尽管出于一般目的已弃用它,但您可以将registration_ids用作向多个设备(最多1000个)多播消息的目标。

    【讨论】:

    • 已经尝试过了,但是 registration_ids 可以使用 HTTP 协议。我正在使用 XMPP 协议
    • @amitmitra 你在使用 XMPP 协议吗? XMPP 不支持发送到多个注册 ID(如您在上面的引用中所见 - Multicast messages (sending to more than 1 registration IDs) are allowed using HTTP JSON format only)。
    • 感谢伊兰! Doc 建议对于多播消息,我必须使用 Http 协议。任何人都可以建议任何链接以在 java 中使用 Http 协议实现 GCM 服务器
    猜你喜欢
    • 1970-01-01
    • 2017-01-08
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多