2013-11-20 3 views
3

Я прочитал некоторые обсуждения по геолокации в фоновом режиме на PhoneGap, но у меня все еще есть проблемы.Phonegap iOS с геолокацией в фоновом режиме

Я работаю над приложением, которое использует геолокационные службы. На IOS, когда приложение находится на переднем плане, все работает нормально. Когда приложение переходит на задний план (примерно через 30-40 минут), однако геокодирование перестает работать, и я больше не получаю событие изменения позиции. В течение отчетного периода приложение успешно удаляет JSON метку времени и lng/lat каждые несколько секунд на мой удаленный сервер, поэтому я знаю, что он работает в течение этого ограниченного периода времени.

Моя конфигурация:

рамки работы: PhoneGap 2,5

Devices: IOS (проверено на 4, 4s & 5 iPhone & iPad4)

IOS Версия: 7.0.4

Xcode: версия 5.0.2 (5A3005)

Плагин: Плагин PowerManagement Plugi п для Кордова (2.0+) Вольфганг Коллер - 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-инфо 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" /> 

Q uestions:

Мне было интересно, есть ли способ гарантировать, что JavaScript в PhoneGap работает постоянно, когда приложение находится в фоновом режиме?

Нужно ли устанавливать Wakelock/release для обеспечения эффективного использования плагина Powermanagement в iOS? Может ли кто-нибудь предложить другой плагин, возможно, конфигурацию/код, который я, возможно, пропустил?

Приветствия, Уэйн Гарднер Сидней Австралия

+0

Большое количество приложений полагаются на фоновых потоков, чтобы обеспечить плавный пользовательский опыт: Расчет позиции GPS в фоновом режиме, например. API-интерфейсы PhoneGap построены с использованием JavaScript, который не является многопоточным и, следовательно, не поддерживает фоновую обработку. –

ответ

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 pro, я Android Pro, и я использую Cordova и этот плагин (PowerManagement), и он не делает то, что вы думаете.

Надеюсь, я вам помогу.

Coco

5

Попробуйте мой. Работает отлично подходит для прошивки и Android

Плагина имеет режим отладки, где он испускает звуки для его событий жизненного цикла (изменение местоположения, выход стационарной-область, и более), который отлично подходит для получения мгновенной обратной связи то время как полевые испытания.

https://github.com/transistorsoft/cordova-background-geolocation-lt

Смежные вопросы