GCM在Android上运行良好,但在iOS上无法工作。

3
我已经成功地在安卓设备上实现了GCM,但是当我尝试在iOS版本上实现时,我无法接收到推送消息。
在iOS版本中,我获得了我的GCM标记,并且可以发送消息(我使用了Postman)。我收到了成功的响应和唯一的消息ID,但没有接收到推送消息。我已经为此苦苦挣扎了几天。
我试图创建一个新的GCM项目,并运行iOS的GCM示例,但都没有起作用。
我在iOS和安卓上使用相同的帐户,并使用相同的apiKey。
Postman代码如下:
{
          "collapse_key": "score_update",
          "time_to_live": 108,
          "delay_while_idle": true,
          "data": {
            "score": "4x8",
            "time": "15:16.2342"
          },
          "registration_ids":["My Token"],
}

我错过了什么?

发布您正在使用的GCM HTTP或XMPP请求的代码。 - ZakTaccardi
添加了Postman代码以发送消息。 - Juvi
嘿Juvi,你能分享一下你的Android GCM代码吗? - sud
2个回答

6

我曾经遇到过同样的问题,通过使用下面文档中所示的content_available和priority选项进行修复:

您应该发送"content_available":true"priority":"high"

https://developers.google.com/cloud-messaging/http-server-ref

enter image description here

示例JSON请求:

{
  "content_available":true,
  "to":"fd4...23f7",
  "priority":"high",
  "notification":
    {
    "body":"anything",
    "title":"any title"
    }
}

3

难以置信,需要将“数据”更改为“通知”。 iOS的有效载荷稍有不同。 更多信息可以在此处找到。


那么在发送请求之前,我需要检查用户使用的平台吗? - Juvi
1
是的。当您注册用户时,请确保也获取操作系统字段。 - ZakTaccardi
你确定吗?当我尝试时,我得到了“错误:无效参数”。 - Tim
请确保您的令牌有效。 - Juvi
@Juvi是的。当我使用data时,我收到了200成功的响应,但是设备上没有接收到消息。 - Tim
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接