ios - startMonitoringSignificantLocationChanges 未立即启动
问题描述
我正在开发一个导航应用程序,一切都在终止、背景和前景状态下工作。但在终止状态的一种情况下, startMonitoringSignificantLocationChanges 不会自行处理。
问题是
- 当我启动 startMonitoringSignificantLocationChanges 并杀死应用程序时,我会在 0.5-1 公里后得到位置事件,因为它从我的初始位置绘制直线到我得到的第一个位置事件。但是当位置事件开始时,一切工作顺利
- 在旅行途中我打开应用程序检查我的路线状态然后终止应用程序时再次出现同样的问题,位置事件再次在 0.5-1 公里后开始出现,并绘制了一条直线。
代码是直的
significantLocationManager = CLLocationManager()
significantLocationManager?.allowsBackgroundLocationUpdates = true
significantLocationManager?.pausesLocationUpdatesAutomatically = false
significantLocationManager?.requestAlwaysAuthorization()
并在用户需要时调用跟踪
significantLocationManager?.startMonitoringSignificantLocationChanges()
休息我已经处理了应用程序委托中的传入位置事件以保存在数据库中。
所以问题是我应该如何处理绘制直线的这种情况?
解决方案
从苹果文档:
一旦设备从之前的通知移动 500 米或更远,应用程序就会收到通知。它不应期望通知的频率超过每五分钟一次。如果设备能够从网络检索数据,则位置管理器更有可能及时传递通知。
如果您需要尽快接收位置更新,我建议您使用 startUpdatingLocation()
desired distanceFilter
of CLLocationManager
。
推荐阅读
- css - 自动完成下拉菜单上的奇怪边框
- java - 无法从 azure 读取 404 错误响应正文
- c# - 为什么消息中的多个构造函数会导致 Akka.NET 无法传递?
- mysql - 在 OTicket 中获取所有门票
- rust - 如何修改读锁内的内容?
- f# - let vs member in F#,需要澄清一些事情
- typescript - 为什么不支持可派生枚举?
- php - 如何将循环内的选定数据库值发送到php中的另一个页面
- sas - 如何使 PROC TABULATE 计算 ID 号,而不是跨列列出每个 ID
- matplotlib - Empty Plots - matplotlib 仅显示绘图框架但没有数据