我已经在PhoneGap的背景下阅读了一些关于地理位置的讨论,但我仍然遇到了问题. 我正在开发一个使用地理定位服务的应用程序. 在应用程序处于前台的IOS上,一切正常.当应用程序进入后台
我正在开发一个使用地理定位服务的应用程序.
在应用程序处于前台的IOS上,一切正常.当应用程序进入后台时(大约30-40分钟后),但地理编码停止工作,我不再获得更改位置事件.在后台期间,应用程序成功地将JSON的时间戳和lng / lat连接到我的远程服务器,所以我知道它在这段有限的时间内正在工作.
我的配置是:
框架工作:PhoneGap 2.5
设备:iOS(在4和4,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中高效工作?
有人可能建议使用不同的插件或配置/代码我可能错过了吗?
干杯,
韦恩加德纳
悉尼,澳大利亚
该插件具有调试模式,可以为其生命周期事件(位置变化,退出静止区域等)发出声音,这对于在现场测试时获得即时反馈非常有用.
https://github.com/transistorsoft/cordova-background-geolocation-lt