【发布时间】:2015-09-15 13:15:29
【问题描述】:
我正在尝试将 GCM 用于 IOS 和 Android 客户端。当应用程序在前台时,它似乎可以在 IOS 上正常工作,但是,当应用程序在后台时,通知中心不会收到消息并且didReceiveRemoteNotification with completionHandler 不会被调用。
我发现一个问题是从 GCM 到 APNS 的消息格式错误。也就是说,它看起来是这样的:
[消息:新消息,collapse_key:do_not_collapse,来自:**************] 虽然,IOS 推送通知应该在通知中有aps 键,对吗?以及 content-available 设置为 1。例如:
{ “aps”:{ “内容可用”:1 }, “数据 ID”:345 }
顺便说一句,前台应用程序无论如何都会收到消息,问题仅在于后台。关于我应该如何解决问题以使 GCM 同时适用于 ios 和 android 的任何建议?
更新: 这是我在网上找到的:
关于实际通信,只要应用程序在 iOS 设备的后台,GCM 使用 APNS 发送消息,应用程序的行为类似于使用 Apple 的通知系统。但是当应用处于活动状态时,GCM 会直接与应用通信
所以我在前台模式下收到的消息:
[消息:新消息,collapse_key:do_not_collapse,来自:**************]
是来自 GCM 的直接消息(APNS 根本没有参与这件事)。所以问题是:APNS 是否重新格式化 GCM 发送给它的内容以遵守 ios 通知格式?如果是这样,我怎么知道 APNS 确实做了某事以及它是否以不同格式向我发送通知?有什么方法可以查看来自 APNS 的传入数据日志?
更新: 好的,我设法更改了消息的结构,现在在前台模式下我收到以下消息:
收到通知:["aps": {"alert":"Simple message","content-available":1},collapse_key:do_not_collapse,来自:************** ]
现在好像格式化好了,但是应用在后台时还是没有反应。 didReceiveRemoteNotifification completionHandler 没有被调用!我应该寻找什么,问题可能出在哪里?方括号会成为推送通知的问题吗?更准确地说,ios 不会从收到的通知中发布任何警报/徽章/横幅。
【问题讨论】:
标签: ios push-notification apple-push-notifications google-cloud-messaging