因此,Google Cloud Messaging遇到了一个非常奇怪的问题。我遇到的问题是它正在成功注册设备,当发送消息时,我收到来自Google的成功消息。但设备从未收到任何消息。
我从GCM回来的消息是:
"result": "Push notification sent successfully: {\"multicast_id\":6008387530769664000,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1442824842607522%73fc535e73fc535e\"}]}"
为了让事情变得更加混乱,我的实施大约在两周前开始工作,到目前为止我还没有改变任何事情。 Android版本的应用程序正在接收消息,没有任何问题,只有iOS实现无效。
非常感谢任何帮助!
谢谢!
答案 0 :(得分:12)
所以我在把最后剩下的毛发拉出脑袋之后终于解决了这个问题。
事实证明设备正在接收消息,但GCM默认将优先级设置为最低优先级。这意味着设备会收到通知但从不显示通知。此优先级用于静默通知以在后台唤醒应用程序。我发现这是因为我一直在控制台中收到消息说:
低优先级推送:[com.test.app] - 不支持后台刷新
优先级是介于1和10之间的值,因此我将优先级设置为10并立即在设备上获取消息。我的GCM POST请求正文现在如下所示:
{
"to": "GCM token here",
"notification": {
"sound": "default",
"badge": "2",
"title": "default",
"body": "Test Push!",
},
"priority" : 10,
}
我真的希望这可以帮助别人,因为我已经花了一周的时间来解决这个问题。
(ノಠ益ಠ)ノ
修改强>
您可以将“优先级”设置为“高”,其设置与将其设置为“10”完全相同(优先级为0到10之间的值.Google将文本转换为iOS的数字
答案 1 :(得分:1)
而不是添加"优先级" :10, 您应该添加以下行: " content_available" :是的,
在APNS服务器(iOS)中,content_avaialble更改为1,后者在后台引导推送通知。并且添加"优先级":10,将耗尽更多的iphone电池。就我而言,我甚至没有任何与优先权相关的东西,但它仍然有效。