在后台接收推送通知 iOS
Posted
技术标签:
【中文标题】在后台接收推送通知 iOS【英文标题】:Receiving push notifications in background iOS 【发布时间】:2014-04-01 15:18:45 【问题描述】:我正在开发一个从 Zenpush 服务接收推送通知的应用程序。我设法在 Zenpush 上设置了应用和帐户来发送和接收通知。
当应用程序处于活动状态(打开)并且我收到通知时 - 一切正常。我在application:didReceiveRemoteNotification:
处理这个。
此外,当用户在通知到达时点击通知或从通知中心打开应用程序时,我可以处理通知。
问题是 - 如果应用程序在后台或已终止,我将无法处理通知。
我已经为此苦苦挣扎了一个星期。
我在后台模式中启用了后台获取和远程通知。
在方案中,我检查了“由于后台获取事件而启动”。
根据 Apple 文档和我在 *** 上发现的内容,我使用以下方法在后台处理通知:application:didReceiveRemoteNotification:fetchCompletionHandler:
。
无论我发送什么通知,都不会调用此方法。我试图通过更改一些数据并尝试 NSLog 来确定这一点。
https://devforums.apple.com/message/873265#873265
我在通知中包含 "content-available": 1。
我还有什么遗漏的吗?或者也许有一种方法可以在应用程序处于后台/终止应用程序激活时接收到的所有通知?
【问题讨论】:
相关:***.com/q/19068762/2446155 当应用程序在 background 中时,您应该能够通过该方法处理通知,而不是在 终止 时(通过向上滑动在应用切换器中) @SantaClaus 我尝试使用您提到的相关问题中的代码。但应用仍然没有对通知做出反应。 尝试在您的方案中取消选中“由于后台提取事件而启动”。这是一个调试功能,旨在模拟由于后台提取而启动,但您想使用正常启动进行测试。 【参考方案1】:仍然无法让应用调用application:didReceiveRemoteNotification:fetchCompletionHandler:
我决定调试我从 Zenpush 收到的确切信息。
事实证明,使用他们的自定义有效负载部分添加 content-available
不是正确的方法。
这样content-available
被添加到asp
对象之后,而不是在它里面。
我写信给 Zenpush 支持,如果我得到任何关于如何在 asp
中发送 content-available
的信息,我将编辑这个答案
更新:
我收到了 Zenpush 支持的回复。此功能现已测试,即将推出。
更新 2:
Zenpush 为后台服务添加了一个复选框,现在它可以正常工作了。
【讨论】:
我也在使用相同的场景,但我使用的是 FCM。我也像你一样被困在我点击通知消息之前无法打开推送通知。您对如何使用 FCM 解决此问题有任何想法吗?以上是关于在后台接收推送通知 iOS的主要内容,如果未能解决你的问题,请参考以下文章