Phonegap 每 5 分钟在后台唤醒应用程序以检查位置 iOS

Phonegap every 5 minutes wake app in background to check location iOS

我正在 Phonegap 中构建一个位置感知应用程序,它必须定期后台中检查位置以确定用户何时enters/exits具体地方。这个问题具体是关于 iOS 的。显着变化 API 对我没有好处,因为它的准确度水平更像是街道方面的,而不是建筑方面的,后者是应用程序所需要的。

到目前为止,在阅读了对 this 的精彩回答中的评论后,我已经设法通过结合此后台模式声明(在 config.xml):

<gap:config-file platform="ios" parent="UIBackgroundModes" mode="replace">
    <array>
        <string>location</string>
    </array>
</gap:config-file>

当应用程序启动后在前台时调用:

navigator.geolocation.watchPosition(...)

我需要的是:

  1. 该应用程序将 在间隔 之间完全暂停(因为它会耗尽电池以使应用程序在 watchPosition 下的 BG 中处于活动状态一天),每次醒来只是为了对服务器执行单个 getcurrentPosition + POST。
  2. 应用程序将直接从 设备启动.
  3. 启动到该例程

所以:

我想我想要的可能是他们谈论的内容 in here(但这是原生的,与 Phonegap 无关...)。

以 Phonegap 方式实现此目标的最佳策略是什么?

你们知道一个插件或插件组合可以实现吗?

我是否应该滥用定时远程通知来唤醒应用程序(听说这可能,不知道苹果会如何批准...)

或者我必须为此目的制作自己的插件吗?

如有任何建议或经验,我们将不胜感激。

至于我在问了这个问题后的几个月里学到了什么,不可能在 iOS 的时间间隔内在后台唤醒应用程序。

我最终找到的最佳解决方案:

正如我在问题中所述,我的 objective 是确定用户何时 enters/exists 特定地点(实际上是建筑物)。解决此问题的最佳方法是 iOS 中的区域监控 API,一旦设备进入应用程序预先确定的特定地理区域,它就会在后台唤醒应用程序。虽然它有一些限制,但我们正在尝试各种优化以在一定程度上克服它们。

存在一些 cordova 插件,这是我最终选择的插件: https://github.com/cowbell/cordova-plugin-geofence

花了一些时间来实施...