我想实现长时间运行的后台计时器,它定期将用户的位置发送到服务器。
为此,我设置location
了模式UIBackgroundModes
,并beginBackgroundTaskWithExpirationHandler
在应用程序进入后台时调用。而对于CLLocationManager
,我使用startUpdatingLocation
方法(不想使用重大变化,因为我需要高精度定位)。
但是在应用程序进入后台大约 26 分钟后,它停止向服务器发送位置。但是应用程序没有崩溃,所以在我把应用程序带到前台后,它可以恢复它的计时器。
26 分钟来自实验,使用 iOS 6.1、iPhone 5。
这里有几个问题,
我不明白为什么它在 26 分钟而不是 10 分钟后暂停,这被称为后台任务的时间限制。
在 16 分钟之前,
backgroundTimeRemaining
方法返回双倍最大值。但在 16 分钟后,它会从 减少600
,因此它会在 10 分钟后暂停后台任务。
我已经尝试beginBackgroundTaskWithExpirationHandler
在到期处理程序内部调用,但没有用。
如果有人对这个问题有线索,将不胜感激。