Phonegap 每 5 分钟在后台唤醒应用程序以检查位置 iOS
Posted
技术标签:
【中文标题】Phonegap 每 5 分钟在后台唤醒应用程序以检查位置 iOS【英文标题】:Phonegap every 5 minutes wake app in background to check location iOS 【发布时间】:2015-08-19 13:02:38 【问题描述】:我正在 Phonegap 中构建一个位置感知应用程序,它必须在 背景 中定期检查位置以确定用户何时进入/离开特定地点。这个问题专门针对ios。重大变化 API 对我没有好处,因为它的准确度水平更像是街道方面而不是建筑方面,而后者是应用程序所需要的。
到目前为止,在阅读了对 this 的精彩回答中的 cmets 之后,我已经设法通过结合此后台模式声明(在 config.xml ):
<gap:config-file platform="ios" parent="UIBackgroundModes" mode="replace">
<array>
<string>location</string>
</array>
</gap:config-file>
当应用启动后在前台时,调用一次:
navigator.geolocation.watchPosition(...)
我需要的是:
-
应用要在间隔之间完全暂停(因为它会耗尽电池让应用在 BG 中的 watchPosition 下全天运行),然后刚醒来每次执行单个 getcurrentPosition + POST 到服务器。
要从设备启动直接启动到该例程的应用程序。
所以:
我想我想要的也许是他们谈论的in here(但这是原生的,与Phonegap无关......)。
以 Phonegap 方式实现这一目标的最佳策略是什么?
你们知道使之成为可能的插件或插件组合吗?
我应该滥用定时远程通知来唤醒应用吗(听说有可能,不知道苹果会如何批准...)
或者我必须为此制作自己的插件吗?
我们将不胜感激任何建议或经验。
【问题讨论】:
试试这个插件:github.com/christocracy/cordova-plugin-background-geolocation 这个插件基于显着变化 API,无法检测到大约几百米以下的位置变化。看起来它不能定期安排后台位置检查,这正是我所需要的 :) 谢谢。 你解决过这个问题吗?我自己也想做类似的事情。 是的,@Tokn,我将其发布为答案,如果解决方案适合您,请随时寻求进一步的帮助。 感谢@FMA,您的回答也支持了我得出的结论。 【参考方案1】:至于在问了那个 Q 之后的几个月里我学到了什么,在 iOS 中不可能在后台按时间间隔唤醒应用程序。
我最终能找到的最佳解决方案:
正如我在 Q 中所说,我的目标是确定用户何时进入/存在特定地点(实际上是建筑物)。解决此问题的最佳方法是 iOS 中的 Region Monitoring API,一旦设备进入应用程序预先确定的特定地理区域,它就会在后台唤醒应用程序。虽然它有一些限制,但我们正在尝试各种优化以在一定程度上克服它们。
存在一些用于 cordova 的插件,这是我最终选择的一个: https://github.com/cowbell/cordova-plugin-geofence
花了一些时间来实现...
【讨论】:
以上是关于Phonegap 每 5 分钟在后台唤醒应用程序以检查位置 iOS的主要内容,如果未能解决你的问题,请参考以下文章
wait_event_interruptible_timeout