我正在编写一个需要使用GPS进行频繁位置检查的应用。它需要每隔10-15秒获取当前位置,然后将其写入数据库(数据库部分与此问题无关,只是想把它扔出去)。我面临的问题是我找不到合适的方法来实现这一目标。我尝试了几件事:
使用LocationManager.getBackgroundLocationListener()
似乎永远不会奏效。我在Android和iOS上都试过它,似乎没有任何事情发生过。可能是我做错了但不管怎么说,我已经在iOS上看到它,它只会在移动到不同的手机信号塔时被击中,因此无法满足我的需求。
我尝试过使用Background Fetch,但它在Android上才可靠。 iOS上的频率是完全随机的,因此也不能满足我的需求。
我尝试过一个新的线程,每隔10-15秒就会获取一个当前位置,但这仅在屏幕打开且正在使用该应用程序时才有效。这不符合我的需求,因为我需要确保在切换到其他应用时继续获取位置更新。
有没有人对替代方法有什么建议来解决这个问题?请注意,我没有objective-c的背景知识,因此像Codename One这样的跨平台解决方案实际上是我唯一的选择。
答案 0 :(得分:1)
在这种情况下,后台提取不是正确的选择,因为iOS希望您声明您实际在做什么。 iOS中禁止您尝试执行的操作,也可能在Android中存在问题。
在后台获取位置数据(特别是在此分辨率下)会产生严重的隐私隐患,因此我怀疑它是否有效。在前台执行此操作应该可以正常工作以允许导航等用例,但在后台可能会出现问题。
位置和网络是大型电池耗尽活动,这进一步加剧了这种情况。因此,您可以对这些API应用的分辨率有限制。背景的一个常见用例是地理围栏,它允许您跟踪用户何时接近重要的兴趣点。此API存在的原因是为了降低轮询成本并将位置使用保持在最低限度。
请注意,Android& iOS提供了检测用户电池使用情况的工具,这些工具可能会影响行为不当的应用程序。