Периодически активируйте приложение iOS, чтобы проверить местоположение

Я разрабатываю приложение для iOS, которое постоянно использует в фоновом режиме службу определения местоположения для мониторинга регионов маяков и GPS. Это приводит к тому, что мое приложение бесполезно расходует заряд батареи, если устройство не находится рядом с моими iBeacons. Он также всегда показывает синюю стрелку службы определения местоположения в строке состояния, из-за чего мои пользователи плохо воспринимают мое приложение.

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

Возможно ли это решение? Или вы думаете, что есть лучшее решение?


person Raphael Royer-Rivard    schedule 24.09.2014    source источник


Ответы (2)


iOS уже оптимизирует использование батареи при поиске маяков, когда ваше приложение находится в фоновом режиме. Мое тестирование показало, что дополнительный расход заряда батареи минимален и что значок местоположения с синей стрелкой не отображается, когда ваше приложение находится в фоновом режиме, за исключением очень коротких периодов (около 10 секунд), когда маяки временно пробуждаются. ваше приложение в фоновом режиме после обнаружения маяка.

Вы уверены, что именно ваше приложение вызывает появление синей стрелки? Это действительно происходит в фоновом режиме в течение длительного периода времени? В вашем plist без необходимости установлен фоновый режим местоположения?

person davidgyoung    schedule 24.09.2014
comment
Вы правы, мониторинг CLBeaconRegion не показывает сплошную стрелку в строке состояния, только пустую. Я предполагаю, что будет то же самое, если я отслеживаю CLCircularRegion (GPS), он будет показывать ту же пустую стрелку в строке состояния. Знаете ли вы, какой из этих двух типов регионов более энергоэффективен? - person Raphael Royer-Rivard; 25.09.2014
comment
Я думаю, что оба бережно относятся к батарее. Извините, я не знаю, что эффективнее. - person davidgyoung; 26.09.2014

После iOS 7.1 Apple оптимизировала службы маяков. Теперь вы получите регионы рядом с вами. Пока приложение закрыто, вы получите локальное уведомление. Вы можете использовать эти методы для дополнительного кода: -

-(void)locationManager:(CLLocationManager *)manager
        didEnterRegion:(CLRegion *)region {
}
-(void)locationManager:(CLLocationManager *)manager
         didExitRegion:(CLRegion *)region {
}

Как сказал @davidgyoung, iOS уже оптимизирует использование батареи, так что не беспокойтесь. :)

person Gaurav Govilkar    schedule 26.09.2014
comment
Да, это методы, которые я буду использовать, но знаете ли вы, проводились ли тесты потребления батареи, чтобы определить, является ли мониторинг CLCircularRegion более энергоэффективным, чем мониторинг CLBeaconRegion? - person Raphael Royer-Rivard; 26.09.2014
comment
Я думаю, вы можете сделать это с помощью инструментария (системная трассировка). Вы можете использовать оба, чтобы узнать, какой из них эффективен. - person Gaurav Govilkar; 29.09.2014