我正在尝试使用GCM向我的iOS应用发送推送通知。该应用程序在后台时不会收到通知,而在前台时会收到通知。我正在使用PHP脚本测试推送通知,该脚本也将消息直接发送到APNS,并且在后台运行。

发送给GCM的JSON :(我是从其他客户端发送来进行测试的)

{
  "to" : "token...",
  "notification" : {
    "title": "GCM TITLE",
    "body" : "FROM GCM",
    "badge": "1",
    "sound": "default"
  }
}

不起作用:
从GCM在didReceiveRemoteNotification中收到的userInfo:
Notification received: [aps: {
    alert =     {
        body = "FROM GCM";
        title = "GCM TILE";
    };
    badge = 1;
    sound = default;
}, gcm.message_id: 123...]

工作:
从PHP脚本发送时收到的userInfo(我还将message_id添加到JSON中以查看是否是问题所在)
Notification received: [aps: {
    alert =     {
        body = "FROM PHP";
        title = "PHP TITLE";
    };
    badge = 2;
    sound = default;
}, gcm.message_id: 123...]

我尝试将content_available添加到具有不同组合的JSON中,但没有帮助,还设置了Content-Type和Authorization请求 header :
Content-Type:application/json
Authorization:key=...

最佳答案

如果有人遇到相同的问题,解决方案是为我在JSON中添加“priority”:“high”。这样,我可以在后台获取通知。

{
  "to" : "token...",
  "priority": "high",
  "notification" : {
    "title": "GCM TITLE",
    "body" : "FROM GCM",
    "badge": "1",
    "sound": "default"
  }
}

10-07 19:49
查看更多