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的主要内容,如果未能解决你的问题,请参考以下文章

安排后台任务

如何使 phonegap 构建应用程序在后台工作

在后台每 5 分钟执行一次函数

wait_event_interruptible_timeout

在背景上每5分钟在Android应用程序中运行代码? [重复]

如何在 Android 中使用后台服务每 5 分钟获取一次设备位置?