微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当用户不移动时,在后台降低 LocationManager 的准确性

如何解决当用户不移动时,在后台降低 LocationManager 的准确性

初始前提:如果 iOS 仅在需要时偶尔要求进行高精度更新,则它更有可能为我的应用提供及时且可靠的后台位置更新。因此我打算:

  1. 当我的应用进入后台时,将位置管理器置于低准确度模式(电池/资源使用率低,当用户开始移动时会通知我们)
  2. 当应用收到更新时更新到高精度模式(表示用户已经开始移动并且更新很有趣)
  3. 如果/当用户停止移动一段时间(不再需要“主动”更新,返回到状态 1)时,返回低精度模式

如果这个前提不正确,我愿意接受挑战。

具体问题:鉴于我的应用程序只是在响应位置事件时解除暂停,我该如何实现第 3 步中的准确度降低?问题是,如果用户停止移动,我将不会收到任何事件,因此我的应用将不会启动,以便注意到准确性可能会降低。

我的想法是实现一个死人计时器:触发一个任务来运行,例如五分钟,如果我还没有发送心跳,并且在每次观察到有意义的位置变化时发送心跳(重置计时器)。在后台运行/在 iOS 中暂停时,这是否可行?如果我不断为相同的标识符重新提交触发器,BGTaskScheduler 会用于此目的,还是 iOS 会认为这是垃圾邮件并降低任务的优先级?

是否还有其他符合我要求的内置功能

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。