在将来的特定时间在iOS中运行后台任务

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

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

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

因此,当应用程序被暂停时,它无法直接唤醒自己。 它以前不能安排NSTimer ,它不能使用像performSelector:afterDelay这样的东西performSelector:afterDelay等等。 应用程序再次变为活动状态的ONLY方式是,如果USER HIMSELF执行某些操作使其处于活动状态,例如收到本地通知并启动警报。 只有当应用程序具有后台模式时,才允许在后台模式下长时间执行应用程序,这些模式包括:voip,audio,location,newstand。 注意:从iOS 9开始,现在不推荐使用kCFStreamNetworkServiceTypeVoIP ,VoIP应用程序应该使用PushKit(VoIP高优先级推送通知)。 即使它具有这些类型之一,应用程序也无法在没有某些限制的情况下执行其代码。 您可以在文档中阅读它。 所以我们必须接受这种事态。 可能是未来的某个时间苹果工程师将进行真正的多任务处理或至少在接收本地通知时执行后台任务或执行所有应用程序的全局后台任务。 但我不相信这一点,因为第三方流程的有限背景执行是iOS调度程序的核心设计,它是CMU Mach 3调度程序的修改版本。