我需要我的 iPhone 应用程序在暂停时在后台执行一些任务,但在关闭后我不需要执行任何任务。我需要解决UIBackgroundMode
吗?
最佳答案
是的,要在后台状态下连续执行代码,您需要注册给定的 UIBackgroundMode。
但是,如果您只想执行单个后台任务(任务完成),则不需要后台模式。
针对您在下面的评论,我会尽力澄清:
在 iOS 中,即使在 iOS 7 中,当您的应用程序无限期地处于后台状态时,也不可能运行任意代码。
用简单的英语来说, - 你不能随心所欲地在后台运行任何你喜欢的代码。
有规则。
这些规则在 iOS 7 中有所放松,但仍然不是完全不受限制。
考虑您的情况:您有一个计时器想要连续调用一个方法。
现在考虑可用的 UIBackgroundModes(它允许您在各种情况下在后台运行):
音频 - 仅适用于基于音频的应用。
位置 - 仅当您的应用具有位置感知功能时,才会执行特定的位置任务
voip - VOIP(Skype 等)
抓取(后台抓取 - 一种新的 iOS 7 API,系统会为您提供应用程序在认为合适时抓取新内容的时刻。
远程通知 - iOS 7 中的新功能,当设备收到具有特定负载的远程推送通知时,它将恢复并执行特定的代码块。
报亭内容 - 仅适用于报亭应用
external-accessory - 仅适用于与设备通信的外部配件
蓝牙外设仅适用于与设备 (fitbit) 通信的外部 BT 配件
如您所见,如果您不属于这些类别之一,则无法使用这些模式。 如果您滥用这些模式,Apple 将不会批准您的申请。
最后我们有“后台任务完成”
这是一种使用 UIBackgroundTask 在后台执行您想要的任何代码的方法!包括调用方法的定时器! - 但有一个问题...
这应该是为了“任务完成”(Facebook 上传未完成的数据,保存或处理应该在应用挂起之前完成的数据,即使用户按下了主页按钮)。
听起来不错,但是使用此方法只能在后台运行最多 10 分钟。如果您超过此时间限制,iOS 将立即终止您的应用程序。
因此,如您所见,您的应用程序无法在商店中获得批准并通过调用您的方法的计时器在后台持续运行。
抱歉。
如果您想了解更多信息,请查看 this出来。
关于ios - 如果应用程序在暂停时工作,是否需要 iOS 后台模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22226148/