我想实现长期运行的后台定时器,它定期发送用户的位置到服务器。
为此,我为UIBackgroundModes
设置了UIBackgroundModes
模式,并在应用程序转到后台时调用beginBackgroundTaskWithExpirationHandler
。对于CLLocationManager
,我使用startUpdatingLocation
方法(不想使用重大更改,因为我需要高精度的定位)。
但是大约26分钟后,应用程序进入后台,它停止发送位置到服务器。但是应用程序没有崩溃,所以在我将应用程序带到前台之后,它可以恢复它的计时器。
26分钟来自实验,与iOS 6.1,iPhone 5。
以下是一些问题,
backgroundTimeRemaining
方法返回双最大值。但是在16分钟后,它会从600
中减少,10分钟后就会暂停后台任务。我已经尝试在过期处理程序中调用beginBackgroundTaskWithExpirationHandler
,但是没有用。
如果有人对这个问题有线索,我们会非常感激的。
发布于 2014-12-20 06:13:25
https://github.com/voyage11/Location
使用此code.you可以设置要调用它的时间间隔。我尝试了许多代码,但我发现这是最准确和电池最少的issue.This也是可怕的背景定位服务。:)
发布于 2014-12-20 03:14:55
如果您成功地设置了UIBackgroundModes
,则应用程序可以在移动时在后台运行很长时间。但是,如果你停止移动超过10分钟(也许更多),应用程序将被系统暂停。如果位置更新,您的应用程序将处于清醒状态,但此唤醒时间将非常短,因此您必须使用cal beginBackgroundTaskWithExpirationHandler
方法来处理位置更新。
https://stackoverflow.com/questions/15650139
复制相似问题