• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 采用什么策略在后台监控用户位置?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:12:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想在后台跟踪用户位置,以便在他靠近他的一位 friend 时向他显示警报。

所以我从 CLLocationManager 开始。据我所知,即使用户重新启动 Iphone 或终止应用程序,它们也是让应用程序了解位置更新的唯一一种可靠方法:startMonitoringSignificantLocationChanges。但问题是,即使在一个有很多 wifi 的城市内,startMonitoringSignificantLocationChanges 会在用户移动 1 公里左右时触发 DidUpdateLocations,这对我的需求来说实在是太多了

另一方面,startUpdatingLocation 以良好的间隔触发 DidUpdateLocations(甚至太多,因为即使用户不移动它也会经常触发 DidUpdateLocations)。但是 startUpdatingLocation 在 iphone 重新启动或应用程序被用户杀死后无法生存。另外我怀疑即使精度为 100m,startUpdatingLocation 也会消耗大量电池。

所以问题是:我可以在我的应用中使用什么策略来有效地跟踪,而不会消耗太多电池全时用户位置?我需要大约 100m 的精度,如果可能的话,每条轨道的间隔在 2.5 到 5 分钟之间(我没有找到任何选项来指定在捕捉新位置之前等待的延迟)

其实我想这样做:

  • 2 个 locationManager、1 个 GPS 和 1 个 重大变化
  • 当应用启动时,我使用 significantChangesLocationManager:startMonitoringSignificantLocationChangesstartMonitoringVisits
  • 我还调用 GPSLocationManager startUpdatingLocation 来检索准确的用户位置。我设置了 PausesLocationUpdatesAutomatically(true) 以便 GPSLocationManager 迟早会自行停止
  • DidUpdateLocationsGPSLocationManager 引发我开始使用 significantChangesLocationManager

您如何看待这种策略?



Best Answer-推荐答案


即使您会收到比您需要的更多的触发器,正如您已经说过的,您可以使用 startMonitoringSignificantLocationChanges。它以非常节能的方式实现。它允许应用程序被终止,并且只有在 iOS 认为设备发生重大移动时才会再次被唤醒。另一个优点是您的应用不需要 location 后台模式,这可能会在应用审核期间提出问题。

startUpdatingLocation 让应用程序不断更新设备的位置,即使您只收到几个 didUpdateLocations: 事件。此外,iOS 在更新期间无法关闭应用程序,因此会消耗大量电池。

您也可以考虑使用地理围栏,在当前位置周围设置导出地理围栏。但是,重要的位置更新将更加可靠。一旦您已经离开地理围栏,退出地理围栏将不再触发,当手机在地理围栏内关闭并在外面重新打开时,可能会发生这种情况。此解决方案具有不需要后台模式的相同优点。

据我了解您的用例,startMonitoringSignificantLocationChanges 听起来是最佳选择。您无法控制它触发的确切时间间隔和距离,但它非常节能且易于使用。

关于ios - 采用什么策略在后台监控用户位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147002/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap