【发布时间】:2013-11-20 22:07:57
【问题描述】:
我在PhoneGap的后台阅读了一些关于地理定位的讨论,但仍然遇到问题。
我正在开发一个使用地理定位服务的应用程序。 在 IOS 上,当应用程序处于前台时,一切正常。当应用程序进入后台时(大约 30-40 分钟后),但地理编码停止工作,我不再收到更改位置事件。在后台期间,应用程序成功地将 JSON 时间戳和 lng/lat 每隔几秒发送到我的远程服务器,所以我知道它在这段有限的时间内工作。
我的配置是:
框架:PhoneGap 2.5
设备:iOS(在 4、4s 和 5 iPhone 和 iPad4 上测试)
iOS 版本:7.0.4
Xcode:版本 5.0.2 (5A3005)
插件: Cordova 的 PowerManagement 插件 (2.0+) 作者:Wolfgang Koller - GOFG 运动电脑 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 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 持续运行?
我是否需要设置唤醒锁获取/释放以确保电源管理插件在 iOS 中有效工作? 有人可以建议我可能错过的不同插件或配置/代码吗?
干杯, 韦恩·加德纳 澳大利亚悉尼
【问题讨论】:
-
大量应用程序依赖后台线程来提供流畅的用户体验:例如,在后台计算 GPS 位置。 PhoneGap API 是使用非多线程 JavaScript 构建的,因此不支持后台处理。
标签: ios cordova geolocation gps background-process