3分钟后iOS 9位置更新后台任务

时间:2015-09-01 01:54:47

标签: ios xcode cllocationmanager background-process

我一直在研究这个使用基本计时器检查位置更新的代码。然后我将它发送到服务器。

http://mobileoop.com/background-location-update-programming-for-ios-7 https://github.com/voyage11/Location

当插入并通过XCode连接时它运行良好,但是当我拔下并移动设备时,操作系统似乎总是在3分钟后完全杀死后台线程。因此,如果我将计时器设置为每30秒运行一次,我将获得~6次更新,直到我将应用程序带到前台。

我已经读过最大背景执行时间是3分钟,但是我看到这个代码在1分钟后重置了后台任务,所以我不知道为什么我会看到这个。

必须有一些解决方法。我能在这做什么吗?

编辑:这对我有帮助:allowsBackgroundLocationUpdates in CLLocationManager in iOS9

3 个答案:

答案 0 :(得分:6)

SE:

if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
    [self.locationManager setAllowsBackgroundLocationUpdates:YES];
}

这是后台位置跟踪所必需的。

答案 1 :(得分:2)

如果有其他人遇到此问题,上面列出的github repo上的代码 - https://github.com/voyage11/Location - 最近已经更新了iOS 9的修复程序,这将允许GPS在后台连续轮询线程在3分钟后终止。

答案 2 :(得分:0)

如果在运行这个非常优秀的库时遇到了不可靠的问题,在更复杂的应用程序中集成到其他xcode模块中,他们可能会查看后台任务列表Id数组的初始化语句,并考虑更改_bgTaskIdList = [NSMutableArray array]; to _bgTaskIdList = [[NSMutableArray alloc]init]; in BackgroundTaskManager.m直到我这样做,我的行为不可靠。有时它工作,有时我得到一个堆栈转储。我发现这是因为bgTaskList已被其他数据覆盖,导致错误的访问错误。