如何通过GCM向iOS设备发送推送通知?

4

我需要从GCM中接收通知。

当我的应用程序在后台模式下时,我无法接收到任何通知。但是当应用程序处于前台模式时,我可以看到它们。

为了测试GCM的功能,我使用以下方法:

curl -X POST -H "Authorization: key= KKKKKKKKKKKK" -H "Content-Type:    application/json" -d '{"to":"XXXXXXXXX","data":{"message": "It is special push notification for test!!!"}}' https://gcm-http.googleapis.com/gcm/send

我看到了这个消息(如果应用程序处于活动状态)。 但是当我使用它时:
curl -X POST -H "Authorization: key= KKKKKKKKKKK" -H "Content-Type: application/json" -d '{"to":"XXXXXXXX","data":{"message": "It is special push notification for test!!!"},"notification":{"body":"great match!","title":"Portugal vs. Denmark","icon":"myicon"}}' https://gcm-http.googleapis.com/gcm/send

在这种情况下,我看不到消息。

你知道如何通过GCM发送通知,在应用程序关闭时显示吗?

附注:看起来GCM与APNs不兼容。


如果应用程序完全终止,它将无法接收推送通知。但是,如果在后台运行,则可以将content_available设置为true,您可以检查此StackOverflow答案获取更多详细信息。 - ztan
大家好,当应用程序处于后台模式时,我可以接收到推送通知。但是当应用程序关闭时,我无法从GCM接收任何通知!有人解决了这个问题吗? - Yestay Muratov
@Yestay Muratov:你有没有看过并尝试我的答案呢?也许你想在https://dev59.com/lpLea4cB1Zd3GeqP7t2y#34712161上检查一下问题。 - Yusuf K.
1个回答

1
你需要将优先级参数设置为高,以便通知 iOS 设备。 priority 的描述如下:
设置消息的优先级。有效值为 "normal" 和 "high"。在 iOS 上,它们对应于 APNs 优先级 5 和 10。
默认情况下,消息使用普通优先级发送。普通优先级优化客户端应用程序的电池消耗,并且应该仅在需要即时传递时使用。对于具有普通优先级的消息,应用程序可能会延迟接收消息。
当使用高优先级发送消息时,消息会立即发送,应用程序可以唤醒休眠设备并打开与您的服务器的网络连接。
但我认为这不是足够的描述。
我为 Java 创建了一个 library,其测试用例在前台、后台或未运行时通知苹果设备。

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