2014-12-10 7 views
0

В iOS мы внедрили мониторинг и ранжирование ibeacons в фоновом режиме. Когда устройство входит в область, мы начинаем варьироваться для ibeacons в фоновом режиме. Когда устройство выходит из региона, мы останавливаемся на ibeacons в фоновом режиме.iOS мониторинг/дальнобойность маяков в фоновом режиме потребляет много батареи

Это работает очень хорошо, когда мы выпускаем следующее заявление при запуске приложения: locationManager.startUpdatingLocation()

и мы можем держать в пределах маяки в фоновом режиме в течение всего времени, что мы находимся в регионе.

Когда мы не выдаем это утверждение, диапазон iBeacons в фоновом режиме прекращается через пару секунд после его запуска. Это недостаточно для нашего приложения, так как нам нужно постоянно гасить маяки, пока мы находимся в регионе. То, что мы также видим, что мониторинг и дальность для маяков в фоновом режиме таким образом занимает много заряда батареи.

У кого-нибудь есть опыт? Расход батареи в фоновом режиме вызван startUpdatingLocation() (который также генерирует обратные вызовы для didUpdateLocations() с широтой и долготой, которые нам не нужны)? Есть ли другой способ избежать ранжирования для маяков, которые будут остановлены через пару секунд в фоновом режиме?

Я видел эту другую запись Beacon Ranging in Background on iOS, но только в течение 180 секунд также не то, что мы действительно хотим. В записи написано: Чтобы решить вторую проблему, получив 10 секунд времени после перехода, вы можете запросить дополнительное время для сохранения. iOS позволяет вам перемещаться в фоновом режиме на 180 секунд. Это не требует фоновых режимов и специального разрешения от AppStore.

ответ

0

Манометр предназначен для малой мощности, но используется только на переднем плане. Когда приложение закрывается или создается фоновое изображение, оно предназначено только для обработки didEnterRegion и didExitRegion. Сама ранжировка не слишком энергоемкая, поэтому я бы сказал, что ваш виновник - locationManager.startUpdatingLocation. Он будет запускать оборудование GPS и постоянно получать ваше местоположение, даже если вы его не используете.

Является ли ваш случай использования аналогичным тому, с которым вы ссылаетесь?

+0

Наш прецедент имеет общие черты с другим сообщением. В нашем случае мы хотим отслеживать местоположение устройства, когда пользователь ходит внутри и снаружи нескольких зданий. Есть несколько перекрывающихся областей, каждая область с несколькими маяками. Пользователи будут изредка иметь приложение на переднем плане. – RobG

+0

Вы можете контролировать не только UDID, но и основные и незначительные изменения. Таким образом вы получите несколько уведомлений didEnter и didExit, которые позволят вам узнать, в каком здании/комнате находится пользователь. –

+0

Вы правы. Мы рассмотрим это как альтернативу. – RobG

3

я писал в блоге о различных вариантах вы здесь:

http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html

Основные параметры:

  • Используйте режим расположение фона постоянно колеблется в фоновом режиме - это по существу тот же метод, что и установка locationManager.startUpdatingLocation(). Недостатком является то, что вы должны убедить Apple, что у вас есть приложение для определения местоположения, чтобы получить одобрение для AppStore.

  • Запросить дополнительное время работы фона. Подробности упоминаются в связи с блогами, но это только дает вам 180 секунд.

  • Играйте в систему, чтобы получить несколько периодов в 180 секунд, влияя на то, как вы входите и выходите из регионов с размещением маяка.

  • Live с 10-секундным интервалом фонового значения по умолчанию.

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

+0

Очень хороший обзор вариантов. Мы, вероятно, сделаем выбор из них. – RobG

+0

Знаете ли вы, почему * дальнобойные маяки используют столько энергии? Я бы подумал, что до сих пор приходится полагаться на получение пакетов данных каждые x миллисекунд от маяка? Поскольку он получает только, он не «чувствует», как он должен использовать много энергии. Кажется, я не могу найти никаких подробностей о том, что такое «ранжирование», или почему API не может сказать, указывает диапазон от того же пакета, который он использует для мониторинга/обнаружения. Если кто-то может предоставить любую информацию о том, что на самом деле происходит для «ранжирования», мне было бы очень интересно узнать. CC: @RobertN – NickG

+1

Ranging постоянно выполняет проверку Bluetooth LE и процессор обрабатывает любые обнаруженные пакеты. – davidgyoung

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