App ios关闭时GCM不发送通知

时间:2015-08-25 20:58:40

标签: ios notifications google-cloud-messaging

我正在使用GCM向android和IOS设备发送通知。

在IOS上,当应用程序处于活动状态或在后台运行时会收到通知。

但是,当应用程序关闭时,不会收到任何通知。 我通过直接联系APNS测试并收到消息。所以设备上的配置似乎没问题。

以下是发送给GCM的消息示例:

{"notification":{
    "badge":"4",
    "body":"Test body",
    "sound":"default",
    "title":"Test title"
},
"collapse_key": "collapse_1",
"message_id": "1000003",
"content_available":true,
"to": "GCM TOKEN FOR DEVICE"
}

当应用程序处于后台时,会正确接收此消息,但应用程序关闭时则不会。

我已经发送了应该发送给APNS的假设消息,直接发送给APNS:

{"aps":{"alert":{"title":"Title","body":"Body"},"badge":5,
"sound":"default", "content-available":1}}

设备会收到此通知。

我错过了什么?授权GCM是否有特定配置发送给APNS?

非常感谢,因为我被困住了。

迈克尔

3 个答案:

答案 0 :(得分:1)

始终显示前景推送(即用于用户的那些)。如果应用程序已被杀死,则不会向应用程序发送后台推送(即用于应用程序的那些)。 你的推送有效载荷不知道它是什么 - 它是一个混合物,它有一个前景推送所具有的正文/标题/声音,但它也有内容可用,用于背景推送。

确定您的推送是前景还是背景推送,然后相应地从您的有效负载中删除不必要的部分。

同样从iOS 8.1(或8.2我忘了哪个)开始,如果应用程序位于前台,或者如果它在后台和设备正在充电,则背景推送将立即传送到应用程序(注意,这包括通过usb连接到mac)。 如果应用程序在后台并且未收费,那么推送可能需要几个小时才能传送到应用程序。

答案 1 :(得分:0)

如果某个iOS应用程序被用户从切换台中杀死,它将不会收到推送通知。这是Apple故意实施的操作系统,因此无法解决。

可在此处找到更多信息(需要登录):https://devforums.apple.com/message/873265#873265

答案 2 :(得分:0)

我们在尝试向GCM主题发送消息时遇到此问题,所有Android设备都正确获取消息,但不是应用程序被杀死的ios消息。解决了在数据通知对象中发送消息的问题。别忘了优先考虑高!!

示例Json:

{"to":"/topics/xxx",
 "collapse_key":"",
 "data":{"message":"topic notification"},
 "notification":{"body":"topicotification"},
 "time_to_live":3600,
 "content_available":true,
 "priority":"high"}