2015-08-09 3 views
2

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

+0

Вы уверены, что вам нужно приложение для непрерывного сканирования маяков в фоновом режиме, или если приложение будет проснуто после того, как оно приближается к маякам (например, чтобы показать уведомление), достаточно? Первое гораздо сложнее сделать (см. Ответы ниже), а также намного сложнее пройти мимо команды Apple по обзору. – heypiotr

ответ

0

Разрешить UIBackgroundModes для обновления местоположения в проекте Plist файла.

Выберите проект на левой панели, затем выберите Возможности и разворачивания Режимы фон список и выберите обновлений местоположения вариант:

enter image description here

+0

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

0

режимы Фоновые являются только частичный ответ. Вы должны иметь один из или оба записей в Info.plist:

enter image description here

Тогда в каком-то месте в вашем коде, вам нужно попросить requestWhenInUseAuthorization или в вашем случае requestAlwaysAuthorization. Затем вам нужно обработать это в делегате менеджера местоположений. Я делаю это так:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    if (status == kCLAuthorizationStatusAuthorizedWhenInUse) { 

     [self startMonitoringAllRegions]; 

     [self.locationManager startUpdatingLocation]; 
    } 
    else if (status == kCLAuthorizationStatusNotDetermined) { 
     [self.locationManager requestWhenInUseAuthorization]; 
    } 
} 

Так где-то я прошу, чтобы начать мониторинг для региона радиомаяка, то в этом методе я проверяю, если у меня есть разрешение от пользователя, чтобы сделать это, если не я m запрос, если (строка из plist будет отображаться), если я начинаю обновлять местоположение пользователя.

Надежда, которая поможет вам идти: D

+0

спасибо, у вас есть рабочий код мониторинга маяка, даже если приложение удалено из переключателя приложений, и если есть какие-то примеры приложений для учебников? ...... – Eagle

+0

Мое приложение «сканирование» только при использовании, но когда я протестировав его, значок отображался на экране блокировки. Идея заключается в том, что вы регистрируетесь для мониторинга региона, и iOS «пробудит» ваше приложение. Но, как я уже сказал, я контролирую только регионы, когда приложение используется :) Что касается учебников, то любой из сети я предполагаю :) – sloik

+0

это нормально, я не могу сканировать маяки, вы можете отправить мне ссылку на учебники – Eagle

0

Это возможно с машинным кодом IOS, но не с Кордова. Когда вы говорите «сканирование» маяков, это обычно означает использование API-интерфейсов масштабирования CLLocation, которые обеспечивают обновление всех видимых маяков каждую секунду. Для того, чтобы сделать это непрерывно в фоновом режиме, вам нужно:

  1. Добавить location в фоновом режиме в .plist filke вашего приложения в XCode, как @ hasan83 предлагает.
  2. Запустите фоновый поток, чтобы приложение работало в фоновом режиме.
  3. Просьба requestAlwaysAuthorization как @sloik предлагает.

Я написал tutorial and reference app, как это сделать. В учебнике упоминается, что эта работа работает только 3 минуты, но с фоновым режимом местоположения ограничение на 3 минуты уходит. Имейте в виду, что добавление этого фонового режима может затруднить получение вашего приложения для AppStore. Apple должна одобрить причины такого фонового использования служб определения местоположения.

Причина, по которой вы не можете сделать это с помощью Кордовы, заключается в том, что JavaScript должен запускаться для сбора данных маяка, возвращаемых API-интерфейсами ранжирования. Это работает на переднем плане, но не в фоновом режиме, потому что Cordova полагается на WebView, который находится на переднем плане для выполнения кода JavaScript. В фоновом режиме ваш пользовательский код просто не может работать.

+0

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

+0

Понял. В то время как должно быть возможно усилить Cordova для поддержки этой возможности с помощью настраиваемого плагина (или, возможно, расширения существующего маякового плагина), к сожалению, возможности в настоящее время не существует. – davidgyoung

0

Попробуйте this plugin для использования iBeacons. Кажется, есть несколько плагинов для хранения приложений, работающих в фоновом режиме, например. this one. Я сомневаюсь, что вы найдете обе функции в одном и том же плагине.

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