Phonegap iOS 在后台使用地理位置
Posted
技术标签:
【中文标题】Phonegap iOS 在后台使用地理位置【英文标题】:Phonegap iOS with Geolocation in Background 【发布时间】: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 构建的,因此不支持后台处理。 【参考方案1】:试试我的。适用于 iOS 和 Android
该插件有一个调试模式,它会为其生命周期事件(位置更改、退出静止区域等)发出声音,这非常适合在现场测试时获得即时反馈。
https://github.com/transistorsoft/cordova-background-geolocation-lt
【讨论】:
Christocracy,我无法让你的插件工作,我只使用了cordova,每个例子都是离子的?请帮忙【参考方案2】:我不确定,但也许 IOS 与 android 类似:Creating an Android Service with Phonegap? (Have phonegap app run even when closed)
因此,当应用程序进入后台或几秒(或分钟)后,Javascript 将停止。 此外,PowerManagement 不是解决方案。 PowerManagement 允许您告诉操作系统:“嘿伙计,我有一个即使手机被锁定也需要运行,所以当我锁定手机时请不要关闭 CPU(或屏幕)。
也许试试这个(仅适用于 IOS > 5 和 WP8):https://github.com/katzer/cordova-plugin-background-mode 我是 IOS 专业人士,我是 Android 专业人士,我使用 Cordova 和这个插件 (PowerManagement),但它并没有按照你的想法做。
希望能帮到你。
可可
【讨论】:
以上是关于Phonegap iOS 在后台使用地理位置的主要内容,如果未能解决你的问题,请参考以下文章
未找到 Phonegap 3.3/Cordova iOS 地理位置