Phonegap每隔5分钟在后台唤醒应用以查看位置iOS

时间:2015-08-19 13:02:39

标签: ios cordova geolocation cordova-plugins background-service

我正在Phonegap中构建一个位置感知应用,必须在后台中检查位置定期,以确定用户何时进入/退出特定位置。这个问题是关于iOS的。重大改变API对我来说并不好,因为它的准确性水平就像街道一样,然后是建筑方面,后者是应用程序所需要的。

到目前为止,在阅读了this的答案中的评论之后,我已经设法通过此背景模式声明( in config.xml )将应用程序保留在后台。 EM>):

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

一旦应用程序在启动后处于前台,请调用:

navigator.geolocation.watchPosition(...)

我需要的是:

  1. 应用程序在间隔期间完全暂停(因为它会终止电池以使应用程序在BG下的 watchPosition 中保持活动状态),并且只是唤醒了每次都要对服务器执行一次 getcurrentPosition + POST。
  2. 直接从设备启动启动该例程的应用。
  3. 所以:

    我认为我想要的是他们所谈论的in here(但这是原生的,无论是Phonegap ......)。

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

    你们知道一个插件或插件的组合使它成为可能吗?

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

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

    任何建议或经验都将受到赞赏。

1 个答案:

答案 0 :(得分:4)

至于在询问Q之后的几个月里我学到了什么,在iOS中的定时间隔内无法唤醒应用程序。

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

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

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

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