我已经在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中高效工作? 有人可能会建议一个不同的插件或者我可能错过的配置/代码吗?
干杯, 韦恩加德纳 悉尼澳大利亚
答案 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)并且它没有做你想象的。
我希望我帮助你。
可可