我正在寻找一种在我的 iOS 应用程序中每 n 分钟更新一次后台位置的方法。我使用的是 iOS 4.3,该解决方案应该适用于未越狱的 iPhone。
我尝试/考虑了以下选项:
CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges
:根据配置的属性,这在后台按预期工作,但似乎无法强制它每 n 分钟更新一次位置NSTimer
:当应用在前台运行但似乎不是为后台任务设计时可以工作UIApplication:beginBackgroundTaskWithExpirationHandler
:据我了解,当应用移到后台而不是实现“long -running”后台进程。如何实现这些定期后台位置更新?
最佳答案
我在 Apple 开发者论坛的帮助下找到了一个解决方案:
定位背景模式
UIApplication:beginBackgroundTaskWithExpirationHandler:
NSTimer
n
smaller 比 UIApplication:backgroundTimeRemaining
时,它会正常工作。当 n
larger 时,location manager
应该在没有剩余时间之前再次启用(和禁用)以避免后台任务被杀死. 这是可行的,因为位置是三种允许的后台执行类型之一。
注意:我在模拟器中测试它而浪费了一些时间,但它不起作用。但是,它在我的手机上运行良好。
https://stackoverflow.com/questions/6347503/
相关文章:
objective-c - 如何在标题更改时停止不需要的 UIButton 动画?
objective-c - 如何在 Objective-C 中声明类级别的属性?
ios - 从父 iOS 访问容器 View Controller
objective-c - 在 Objective-C 中 @synchronized 如何锁定/解
ios - 内部测试时 ITSAppUsesNonExemptEncryption 导出合规性?
objective-c - 迭代时从 NSMutableArray 中删除的最佳方法?