2015-02-06 2 views
0

У меня есть приложение, построенное с использованием Sencha Touch с Cordova. Приложение представляет собой карту Google Maps, которая собирает позицию пользователя каждые 5 секунд.Приложение Cordova, backgroundmode не работает на iOS

Я установил этот плагин BackgroundMode: https://github.com/katzer/cordova-plugin-background-mode

Это, кажется, работает на телефонах, но на айфонах я не получаю позиции пользователя, если они выключают экран.

Я убедился, что у меня есть свойство UIBackgroundModes, установленное в plist приложения (у него есть два элемента: «Приложение воспроизводит аудио или потоки аудио/видео с использованием AirPlay» и «Регистры приложений для обновления местоположения»).

Любые идеи, что мне не хватает?

ответ

1

Если ваше приложение использует setTimeout или setInterval для сбора позиции пользователя каждые 5 секунд, это не будет работать в фоновом режиме на iOS. Для работы в режиме фонового местоположения iOS вашему приложению необходимо зарегистрировать обновления позиций, используя navigator.geolocation.watchPosition().

Функция успеха, которую вы регистрируете при этом, будет вызываться каждый раз, когда служба местоположения iOS получает обновление позиции. Это будет вызвано, будет ли приложение в фоновом или переднем плане, но не будет фиксированным интервалом времени.

+0

Да, похоже, это может быть моей проблемой. Я проверю это и вернусь к тебе. Благодаря! –

+0

Вот и все! Благодаря! Примечание для других: даже не работает navigator.geolocation.getPosition(). Вы должны использовать watchPosition(). –

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