如果应用在暂停时有效,则需要iOS背景模式吗?

时间:2014-03-06 13:35:38

标签: ios background

我需要我的iPhone应用程序在暂停时在后台执行某些任务,但在关闭后我不需要执行任何任务。我是否需要解决UIBackgroundMode

2 个答案:

答案 0 :(得分:5)

是的,要在后台状态下连续执行代码,您需要注册给定的UIBackgroundMode。

请参阅herehere了解相关信息。

但是,如果您只想执行单个后台任务(任务完成),则不需要后台模式。

在回复下面的评论时,我会尽量明确:

在iOS中,即使在iOS 7中,当应用程序无限期处于后台状态时,也无法运行任意代码。

用简单的英语, - 只要你愿意,你就不能在后台运行你喜欢的任何代码。

有规则。

这些规则在iOS 7中有所放松,但它仍然没有完全不受限制。

考虑一下你的情况:你有一个想要连续调用方法的计时器。

现在考虑使用UIBackgroundModes(允许你在各种情况下在后台运行):

音频 - 仅适用于基于音频的应用。

位置 - 仅当您的应用可识别位置时,才会执行特定的位置任务

voip - VOIP(Skype等)

抓取(后台抓取 - 一种新的iOS 7 API,系统会为您提供抓取新内容 认为合适时的应用时刻。

远程通知 - iOS 7中的新功能,当设备收到具有特定有效负载的远程推送通知时,它将恢复并执行某段代码。

报亭内容 - 仅适用于报摊应用

external-accessory - 仅限外部配件与设备通信

bluetooth-peripheral 仅限外部BT配件与设备通信(fitbit)

如您所见,如果您不属于这些类别之一,则无法使用这些模式。 如果您滥用Apple的模式,Apple将不会批准您的申请。

最后我们有'后台任务完成'

这是一种使用UIBackgroundTask在后台执行您想要的任何代码的方法!包括调用方法的计时器! - 虽然有一个问题......

这应该是'任务完成'(Facebook上传不完整,保存或处理应用程序暂停之前应该完成的数据,即使用户按下主页按钮)。

听起来不错,您只能使用此方法在后台运行最多10分钟。如果你超过这个时间限制iOS会立即杀死你的应用程序。

正如您所看到的,您的应用程序无法在商店中获得批准,并且无法通过调用您方法的计时器在后台运行。

很抱歉。

如果您想了解更多信息,请查看this

答案 1 :(得分:-2)

使用位置服务并设置NO位置管理器“pausesLocationUpdatesAutomatically”属性。