地理围栏的重要位置变化

poc*_*chi 10 gps geolocation ios geofencing

我需要根据用户与特定位置的接近程度以及其他一些规则(如果该区域有任何特定消息)向用户发送特定消息.例如,用户上车并开始工作.当他到达工作岗位的那一刻,他会得到某种消息,如果有消息要传递的话.这就是我的想法(当我在我的应用程序的其他部分工作时,没有代码只是试图设计流程)

  1. 收听重要的位置更改,每次发生这种情况时,都会将用户的地理位置发送到服务器,以查看是否有任何消息要在该位置附近发送.不行.由于过度使用收音机,这会耗费太多电池.

  2. 每天保存消息区域,并在每个重要位置更改对本地存储的数据进行测试.如果有任何匹配那么联系服务器.理论上听起来更好.

问题:

  1. 2号可以工作吗?
  2. 重要位置变化的保真度是多少?我希望不要在没有收到位置变更通知的情况下丢失特定区域的消息.
  3. 真正的位置变化真的是基于细胞塔的变化吗?(我在很多场合都读到过那不是)
  4. 区域监测是否更适合这项任务?有人用吗?什么是电池消耗,它是否具有更好或更准确的位置变化?
  5. 如果应用程序被终止将重要的位置更改真的唤醒我的应用程序?有点依赖它.
  6. 关于如何以我在这里没有谈过的方式解决这个问题的任何建议?

百万感谢任何花时间清理这些东西的人.

编辑:额外问题7.区域监测,添加了大量区域对系统有任何影响?说有2个地区对100个地区?

Dea*_*ids 27

我已经尝试过类似的过程,并使用重要的位置更改和区域监控来充分利用以下方法.经过多次迭代后,我目前对电池寿命和相当可靠的处理几乎没有影响.

我使用显着的位置变化来触发过滤通知的方法,仅为当前位置的有限半径范围内的区域设置区域.

根据我的经验,预计相隔3-4英里的地方会发生重大的位置变化.这可能会有很大的不同,但我不记得看到的远不止于此.这使得在城镇周围进行非常罕见的处理,当用户上高速公路时可以预测.我尝试了许多区域大小,刷新半径和位置服务灵敏度设置的变化.

请记住,您注册的地区数量有限.我没有在任何地方找到这个限制的确切内容,但有些用户表示任何一个应用程序都不应该期望注册更多的10个区域.我自己没有找到任何证明这个数字的参考,我有时会注册超过10个.

当看到设备以高速公路速度行驶相当长的时间时,我已经玩过增加半径和最小刷新距离.在这种情况下,我觉得我可能会浪费不必要的处理周期.在实际使用中,它似乎不是一个问题,但我一直试图在任何情况下最大限度地提高效率.

我的经验与您的具体问题有关;

1-对于您的情况,它取决于您打算考虑触发器通知的位置的距离.如果您在用户进入几英里或用户到达城镇时通知,这可能实际上是可行的.如果您想在用户进入某个位置的几米范围内时触发,则不适合您.根据我的经验,倾听重要的位置变化通常不会对电池寿命造成太大影响.当然,接收事件时您正在进行的处理和网络活动是另一个因素.我检查设备移动了多远,接受上一个位置的时间.在我的情况下,没有必要每次刷新所有内容,因此我限制了我的反应.

2-我对重要位置变化的经验如上所述,但所有文件都清楚地表明,与所使用的各种信号的条件和可用性无关,这与设定距离无关.我想在城市环境中,它更容易预测,而且在广阔的空间中更少.我的大多数经验都是前者.

3-通过广泛的谷歌搜索,通过文档和大量知情推测,我得出结论,重要的位置变化是由单位可用的所有信号的神奇组合决定的.有wifi信号以不同程度的准确度广播它们的位置,并且蜂窝塔通常知道它们在哪里.定位服务正在使用所有这些以及相应的信号强度来确定设备何时行进了"显着距离".我认为很明显,计算会随着条件而变化,并且随着它们继续改善准确性和功率使用之间的平衡而变化,因此模糊的规格.

4-如问题1所示,有些因素可能会决定您可以单独使用重要的位置更改,但我认为区域监控在任何情况下都最适合您的目的.可能两者的组合是有序的.我对自己的应用非常满意.

5-重要的位置更改将唤醒您的应用.您必须遵循旨在在后台运行的方法中的一些准则,并了解这些限制.将您的背景方法包装在beginBackgroundTaskWithExpirationHandler和UIBackgroundTaskInvalid调用中.注意线程阻塞.完整阅读文档和位置处理指南.

6-我的建议如上.其他考虑因素一般是您使用位置服务.您需要制作各种自定义处理程序.即使您使用该服务,也不希望对收到的每条消息做出反应.您必须经常检查更改,准确性,新近度和所有爵士乐响应.我发现这一系列帖子在获取基础知识方面非常有价值:来自长周末网站的第1部分

7-如上所述,我的理解是,可以注册的区域数量存在系统范围的限制.我认为,由于他们没有准确地告诉你这个数字是什么,它可能会允许你的应用程序或多或少取决于其他应用程序设置了多少其他应用程序.根据我的经验,我经常在我的设定范围内注册并删除10到15个区域.我按照从最近到最远的顺序设置它们,因为我认为最后一个将被删除或拒绝.其他注意事项 - 区域标识符是全局的,因此,如果您的标识符不唯一,则它将替换具有相同名称的先前区域. - 区域大小和边距是您需要尝试的设置,以便最好地满足您的特定需求.