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】:

试试我的。适用于 iOSAndroid

该插件有一个调试模式,它会为其生命周期事件(位置更改、退出静止区域等)发出声音,这非常适合在现场测试时获得即时反馈。

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 在后台使用地理位置的主要内容,如果未能解决你的问题,请参考以下文章

Cordrova 后台地理位置 phonegap 构建失败

iPhone - iOS5:phonegap 上的地理位置

iOS 上的 Phonegap 构建/地理定位

未找到 Phonegap 3.3/Cordova iOS 地理位置

通过 PhoneGap 中的短信分享手机地理位置坐标(适用于 Android/IOS)

Phonegap (Cordova 2.9.0) iOS 上的地理定位