3

有没有办法在 iOS 7 中连接后台任务(例如切换位置服务的使用)以在特定时间点(例如明天早上)运行而无需用户打开应用程序,或者没有持续运行的后台进程?

我知道的唯一选择是在所需时间向设备发送推送通知,但有没有人知道任何纯粹的设备替代方案?

4

1 回答 1

4

any purely on-device- 不幸的是,直到现在 - 2014 年还没有这样的方法。Background task execution if content avaliable出现在 iOS 7 中是一件相当不错的事情,但它是基于推送的。

因此,当应用程序暂停时,它无法ANYTHING直接唤醒自己。它以前不能安排一个NSTimer,它不能使用诸如此类的东西performSelector:afterDelay等等。ONLY应用程序可以再次激活的方式是,如果它USER HIMSELF做了一些事情来使其激活,例如接收到本地通知并弹出警报。只有当应用程序具有后台模式时,才允许在后台模式下长时间执行应用程序,这些模式是:voip、音频、位置、报亭。注意:从 iOS 9 开始,kCFStreamNetworkServiceTypeVoIP现在已弃用,VoIP 应用程序应改用 PushKit(VoIP 高优先级推送通知)。即使它具有这些类型之一,应用程序也无法在没有某些限制的情况下执行其代码。您可以在文档中阅读有关它的信息。所以我们不得不接受这种状况。可能在未来的某个时间,Apple 工程师将进行真正的多任务处理,或者至少在收到本地通知时执行后台任务,或者为所有已安装的应用程序执行一些全局后台任务调度程序。但我不相信这一点,因为限制后台执行 3-rd 方进程是 iOS 调度器的核心设计,它是 CMU Mach 3 调度器的修改版本。

于 2014-01-21T10:44:48.160 回答