当应用程序在后台运行时无法处理推送通知,接收推送但未点击横幅或警报
Posted
技术标签:
【中文标题】当应用程序在后台运行时无法处理推送通知,接收推送但未点击横幅或警报【英文标题】:Can't handle Push Notification when the app is running in Background, receives push but didn't click on the banner or alert 【发布时间】:2012-07-25 12:10:28 【问题描述】:我已经在我的应用程序中实现了推送通知。我已经在我的 iPod 中测试了推送消息。结果如下:
场景测试: 1. 应用程序在前端运行,iPod 未锁定 - [状态 = 没问题]
应用程序在前端运行,iPod 锁定 - [状态 = 没问题]
应用程序在后台运行,iPod 未锁定 - [status = FOUND PROBLEM] 未保存在数据库中 + 没有警报(实际上没有得到任何事件处理程序)
应用程序在后台运行,iPod 锁定 - 如果我立即打开应用程序,状态 = 没有问题,但如果我等待 2 分钟,然后打开我的应用程序,我没有收到消息!
应用程序未运行(不在后台 + 前端),iPod 未锁定 - (发现问题)未保存在数据库中 + 无警报 我可以将推送消息视为警报,但我没有点击它,我的应用程序会包含一个徽章图标,但如果我点击我的应用程序,我不会收到任何关于我的推送消息的信息
应用程序没有运行(不在后台 + 前端),iPod 被锁定 - 如果我立即解锁手机没问题,但如果我等待 2 分钟,我会丢失消息!
----------------------------------------------- -------------------------------------------------------
如果我总结了我的问题:我收到了所有场景的推送通知,但如果我不点击警报/横幅,我将无法处理某些场景的通知!我想在所有场景中将消息保存在我的本地数据库中以用于特殊目的。
我在 *** 和其他网站上也看到了这么多链接,但我没有看到有人已经遇到过的相同情况!
我的 iPods ios 版本是:5.0
谁能帮我解决这个问题?
【问题讨论】:
【参考方案1】:我不确定如何更好地表达这个,但是:它应该是这样工作的。
您不能依赖推送通知作为唯一通信机制。当您的应用启动时,您需要有一种方法可以从您的网络服务中查询当前状态。
通知负载中的数据可用作快捷方式或优化,但不能作为刷新机制的替代方法。
【讨论】:
您好,感谢您的回答。可能是您建议使用 Web 服务而不是推送通知。但我相信我目前的问题有一个解决方案。我查看了 50 多个链接,但没有得到解决方案!目前我不想改变通信机制,我会等待解决方案,但如果没有解决方案,那么必须考虑其他通信机制。谢谢。 你没有说数据来自哪里,所以我假设一个网络服务。不过,我的回答仍然有效。无论您使用何种机制,都不能将推送通知作为发送数据的唯一方式。 我正在从 Apple 推送通知服务接收数据。我的问题是处理推送通知,我没有接收问题。假设我在调试模式下运行我的应用程序,然后我锁定了我的设备,同时我收到了推送通知。我等了 2-3 分钟,然后我解锁了设备。在那种情况下,我没有事件处理程序来处理推送通知!当我解锁设备时,会触发以下两种方法: 1. applicationWillEnterForeground 2. applicationDidBecomeActive 但是在这两种方法中,我没有收到任何推送通知消息信息。 如果我的手机没有被锁定,那么我可以在 didReceiveRemoteNotification 方法中读取推送通知,如果我的应用程序没有运行,获取推送消息并且有人点击它,我可以读取推送通知在 didFinishLaunchingWithOptions 方法中。 推送通知不是一种无损的通信形式。在其他情况下,用户可能会错过消息。这是设计使然。再次重申:您不能依赖推送通知作为唯一的通信机制。以上是关于当应用程序在后台运行时无法处理推送通知,接收推送但未点击横幅或警报的主要内容,如果未能解决你的问题,请参考以下文章