iOS 7 - 有没有办法在没有推送消息的情况下通过后台提取进行可靠的轮询?

时间:2014-10-05 20:28:15

标签: ios7

我有一个应用程序,我需要通过轮询创建本地通知而不进行推送 - 主要是由于客户端基础结构限制及其安全模型。

我读过:http://www.objc.io/issue-5/multitasking.html,我看过David Chan的WWDC演示文稿 - 单推信息开始下载任务 - 但我真正需要的是定期提取背景 - 比如每十分钟一次 - 在iOS 7中。

我见过VOIP黑客攻击。没有。没有用户交互或推送消息,有什么非黑客的方法可以做到这一点?你可以指点我的任何例子吗?

以下是我所知道的:

  1. 后台数据任务可以在调试器中运行,但如果您可以在IPA上获得控制台,您很快就会发现它们确实被禁止(因此许多示例无效)。

  2. 后台URL任务需要自定义委托 - 但是获取完成处理程序是iffy。我也发现了IPA和控制台。

  3. 我很想避免使用AFNetworking lib - 非常简单。

2 个答案:

答案 0 :(得分:1)

后台提取不是一个可靠的解决方案 - 你受操作系统的支配,并不是很怜悯。滥用iOS后台模式并不是一个可靠的解决方案 - 众所周知,苹果拒绝启用后台模式的应用程序,例如位置,VOIP和音乐播放,没有正当理由。后台URL任务不是您可以依赖唤醒您的应用程序的东西;他们会唤醒它,但应用程序在后台不会清醒以排队后台URL任务。

你最好的和最有意的方法仍然是背景提取,但要准备好失望。您的应用程序将不会在您需要的时间间隔内被唤醒应用程序。此外,用户可以在应用切换器屏幕中终止应用,导致您的应用在打开之前永远不会被唤醒。

推送以外没有真正可靠的方法。为了用户体验,您需要坚持与客户合作。

答案 1 :(得分:1)

不幸的是,没有"可靠"在iOS上这样做的方法。使用后台提取API,您无法保证在您希望它运行时运行进程。正如您所说,您已经查看了API,所以我可能会告诉您一些您已经知道的事情。本地通知无法解决您的问题,因为这不是您可以唤醒应用程序并启动网络事件的方式。这是Apple不想要的行为,因为这会否定其后台任务合并的全部目的。

你真的需要有一个这样的推送机制,所以如果这是需要的东西,那么你可能不得不向客户强调。