Phonegap iOS与背景中的地理位置

时间:2013-11-20 22:07:58

标签: ios cordova geolocation gps background-process

我已经在PhoneGap的背景下阅读了一些关于地理定位的讨论,但我仍然遇到了问题。

我正在开发一个使用地理定位服务的应用程序。 在应用程序处于前台的IOS上,一切正常。当应用程序进入后台时(大约30-40分钟后),但地理编码停止工作,我不再获得更改位置事件。在后台期间,应用程序成功地将JSON的时间戳和lng / lat连接到我的远程服务器,所以我知道它在这段有限的时间内正在工作。

我的配置是:

框架工作:PhoneGap 2.5

设备:iOS(在4点,4点和5点iPhone和iPad4上测试)

iOS版本:7.0.4

Xcode:版本5.0.2(5A3005)

插件: Cordova的PowerManagement插件(2.0+) 作者:Wolfgang Koller - GOFG Sports Computer https://github.com/purplecabbage/phonegap-plugins/tree/master/iOS/PowerManagement

startWatch功能:

function onDeviceReady() {
    startWatch();
    function startWatch() {
        var options = { enableHighAccuracy: true, timeout: 3100, maximumAge: 0 }; 
        watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);            
        timerID = setInterval ( updateLocation, 3000 ); 
    }
.
.

App-info plist包括:

"App registers for location updates" under "Required background modes"
&
<key>UIBackgroundModes</key>
<array>
    <string>location</string>
</array>

config.xml包括:

<plugin name="PowerManagement" value="PowerManagement" />

问题:

我想知道有什么方法可以确保当应用程序在后台时,PhoneGap中的JavaScript会不断运行吗?

我是否需要设置Wakelock获取/发布以确保Powermanagement插件在iOS中高效工作? 有人可能会建议一个不同的插件或者我可能错过的配置/代码吗?

干杯, 韦恩加德纳 悉尼澳大利亚

2 个答案:

答案 0 :(得分:5)

试试我的。适用于 iOS Android

该插件具有调试模式,可以为其生命周期事件(位置更改,退出静止区域等)发出声音,这对于在现场测试时获得即时反馈非常有用。

https://github.com/transistorsoft/cordova-background-geolocation-lt

答案 1 :(得分:2)

我不确定,但也许IOS就像Android这样的功能:Creating an Android Service with Phonegap? (Have phonegap app run even when closed)

因此,当应用程序进入后台或几秒钟(或分钟)后,Javascript将停止。 而且,PowerManagement不是解决方案。 PowerManagement允许你告诉操作系统:&#34;嘿,我有一个即使手机锁定也需要运行,所以当我锁定手机时请不要关闭CPU(或屏幕)。

也许试试这个(仅适用于IOS&gt; 5和WP8):https://github.com/katzer/cordova-plugin-background-mode 我是IOS专业人士,我是Android专业版,我使用Cordova和这个插件(PowerManagement)并且它没有做你想象的。

我希望我帮助你。

可可