我喜欢扩展使用标准位置服务的应用程序,即使应用程序未运行或处于后台,也能在发生位置更改时通知应用程序。
苹果为此建议使用显着更改位置服务,这可以节省电池电量,而且准确性对我来说很好。
但是是否可以在一个项目中同时使用标准和重大更改位置服务?
我喜欢扩展使用标准位置服务的应用程序,即使应用程序未运行或处于后台,也能在发生位置更改时通知应用程序。
苹果为此建议使用显着更改位置服务,这可以节省电池电量,而且准确性对我来说很好。
但是是否可以在一个项目中同时使用标准和重大更改位置服务?
在 Apple Developer Forums 的帮助下找到了实现此功能的解决方案。我做了以下事情:
指定位置背景模式
通过使用
UIApplication:beginBackgroundTaskWithExpirationHandler
在后台使用 NSTimer:如果 n 小于 UIApplication:backgroundTimeRemaining,它确实可以正常工作,如果 n 较大,则应在之前再次启用(和禁用)位置管理器没有时间来避免后台任务被杀死。这确实有效,因为 location 是三种允许的后台执行类型之一。
注意:不要浪费时间在模拟器中测试它不起作用,在我的手机上运行良好。