我正在开发一个需要每30分钟更新一次后台任务位置的应用程序。
我尝试使用NStimer并每分钟更新一次,并且它可以正常工作(花了2个小时工作)。但是,当我将其设置为30分钟时,iOS将在10分钟后杀死我的应用程序。
日志显示:
Sun Oct 16 11:29:47 unknown SpringBoard[32] <Warning>: MyApp[315] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0xbb34040> identifier: UIKitBackgroundCompletionTask process: MyApp[315] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:315 preventSuspend preventIdleSleep
)}
Sun Oct 16 11:29:47 unknown SpringBoard[32] <Warning>: Forcing crash report of WhereAreYouReg[315]...
Sun Oct 16 11:29:48 unknown SpringBoard[32] <Warning>: Finished crash reporting.
我的后台任务从以下代码开始:
backgroundTaskIdentifier = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
}];
theTimer=[NSTimer scheduledTimerWithTimeInterval:30*60.0
target:self
selector:@selector(updateLocation)
userInfo:nil
repeats:YES];
updateLocation开始更新位置,当接收到位置时,它将停止更新位置以节省电池。
应该如何执行此后台任务?在防止600秒后杀死我的应用程序方面有帮助吗?
非常感谢你!
最佳答案
你不能无法创建运行时间超过10分钟的后台任务。