4

我想创建一种服务类型的应用程序,它在后台工作,但问题是 iOS 应用程序有 10 分钟的限制。

有什么方法可以让我们连续运行我们的应用程序,我读过一些文章,如果我们在后台播放一首歌曲,那么应用程序在 10 分钟后永远不会终止,但我认为苹果不会批准这一点。

任何建议都会有所帮助。

4

2 回答 2

6

来自 iOS 开发者库:

iOS 7 支持两种新的应用后台执行模式:

定期需要新内容的应用程序可以在系统中注册并定期唤醒或启动以在后台下载该内容。setMinimumBackgroundFetchInterval:要注册,请在应用的 Info.plist 文件中包含 UIBackgroundModes 键和获取值,并使用该方法设置获取操作之间所需的最短时间 。您还必须 application:performFetchWithCompletionHandler:在您的应用程序委托中实现该方法才能执行任何下载。使用推送通知来通知用户有新内容可用的应用程序现在可以使用这些通知来启动后台下载操作。要支持此模式,请在应用的 Info.plist 文件中包含带有远程通知值的 UIBackgroundModes 键。您的应用委托还必须实现该 application:didReceiveRemoteNotification:fetchCompletionHandler: 方法。

第一种情况:通过设置setMinimumBackgroundFetchInterval:toUIApplicationBackgroundFetchIntervalMinimum或任何其他以秒为单位的数字(在您的 AppDelegate 中)将通知系统您的应用需要更新其内容,即使它在后台也是如此。

请注意。获取间隔是最小值而不是最大值!因此,您的应用程序将在系统决定时唤醒。这可以是一天一次或一天多次。就我而言,我的应用程序正在更新大约。每 10 分钟一班,直到 19:00。在那之后,大约花了。下一次更新需要 7 小时,下一次更新需要 3 小时。第二天,同样(每 10 分钟一班,直到 19:00)。

如果您要求从 Internet 进行定期更新(高效且低电池消耗),但不适用于需要在短时间内更新的内容,例如电池电量或电池状态,则此技术非常理想。

希望这可以帮助。

iOS 7 仍处于 Beta 版本。因此,在正式发布之前,上述所有内容都可能会更改或更新。

于 2013-09-05T10:06:48.827 回答
2

@rckoenes 在他的简短回答中是正确的,但在 iOS7 中,您可以在Apple 的开发者门户上做到这一点:

通过采用 iOS 7 中新的多任务 API,使您的应用程序的内容保持最新。新服务允许您的应用程序在后台更新信息和下载内容,而不会不必要地耗尽电池电量。更新可以在机会性的时间发生,并根据使用情况智能安排,因此您的应用可以在用户需要时在后台更新内容。

于 2013-09-05T08:57:37.713 回答