Phonegap каждые 5 минут пробуждает приложение в фоновом режиме для проверки местоположения iOS

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

Пока что, прочитав комментарии в отличном ответе на this, мне удалось сохранить приложение в фоновом режиме с помощью комбинации этого объявления фонового режима (в config.xml):

<gap:config-file platform="ios" parent="UIBackgroundModes" mode="replace">
    <array>
        <string>location</string>
    </array>
</gap:config-file>

и один раз, когда приложение находится на переднем плане после его запуска, вызов:

navigator.geolocation.watchPosition(...)

Мне нужно:

  1. Приложение должно быть полностью приостановлено между интервалами (поскольку оно будет разряжать батарею, чтобы приложение оставалось активным в BG под watchPosition в течение всего дня) и просыпаться только для выполнения одиночный getcurrentPosition + POST на сервер каждый раз.
  2. Приложение, которое будет запускаться в этой подпрограмме прямо при загрузке устройства.

So:

Я подумал, что мне бы хотелось, возможно, то, о чем они говорят здесь (но это нативно и независимо от Phonegap...).

Какова наилучшая стратегия для достижения этого с помощью Phonegap?

Ребята, вы знаете плагин или комбинацию плагинов, чтобы сделать это возможным?

Должен ли я злоупотреблять синхронизированными удаленными уведомлениями, чтобы заставить приложение проснуться (слышал, что это возможно, не знаю, как Apple это одобрит...)

Или я должен сделать свой собственный плагин для этой цели?

Любые советы или опыт будут оценены.


person FMA    schedule 19.08.2015    source источник
comment
Попробуйте этот плагин: github.com/christocracy/cordova-plugin-background-geolocation   -  person Joerg    schedule 19.08.2015
comment
Этот плагин основан на API значительных изменений, который не может обнаруживать изменения в положении менее нескольких сотен метров. Не похоже, что он может планировать фоновые проверки местоположения с интервалами, что мне и нужно :) Спасибо.   -  person FMA    schedule 19.08.2015
comment
Вы когда-нибудь решали это? Сам собираюсь сделать что-то подобное.   -  person ED-209    schedule 12.01.2016
comment
Да, @Tokn, это я опубликовал как ответ, если решение вам подходит, не стесняйтесь обращаться за дополнительной помощью.   -  person FMA    schedule 18.01.2016
comment
Спасибо @FMA, ваш ответ подтверждает вывод, к которому я пришел.   -  person ED-209    schedule 19.01.2016


Ответы (1)


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

Лучшее решение, которое я смог найти:

Как я уже говорил в вопросе, моя цель состояла в том, чтобы определить, когда пользователь входит/существует в определенных местах (фактически в зданиях). Лучший способ решить эту проблему — API мониторинга регионов в iOS, который запускает приложение в фоновом режиме, как только устройство входит в определенные географические регионы, заранее определенные приложением. Однако у него есть некоторые ограничения, но мы пытаемся использовать различные оптимизации, чтобы несколько их обойти.

Существует несколько плагинов для Cordova, это тот, который я выбрал в итоге: https://github.com/cowbell/cordova-plugin-geofence

Потребовалось время для реализации...

person FMA    schedule 18.01.2016