Как продолжить мониторинг iBeacon при выключенном экране в iOS?

Я разрабатываю приложение для iOS для мониторинга iBeacons. Хорошо работает как на переднем, так и на заднем плане. Мне также нужно, чтобы он продолжал следить, даже когда экран выключен. Теперь моя проблема в том, что когда я выключаю экран с помощью кнопки плеча, NSLog показывает, что сигнал iBeacon отключается (RSSI=0, beacon.accuracy=-1.0) соответственно, а через 10 секунд маяк не обнаруживается вообще, а метод делегата locationManager:didRangeBeacons:inRegion: вызывается непрерывно. Кажется, что приложение работает, когда экран выключен, но iOS отключает службу определения местоположения для ранжирования iBeacon. Я попытался установить "locationManager.pausesLocationUpdatesAutomatics = NO;" но все еще не работает. Есть какой-нибудь совет по этому вопросу? Заранее спасибо.

1 ответ

Кажется, что вы делаете ранжирование вместо мониторинга. Ранжирование работает только тогда, когда приложение активно - либо на переднем плане, либо в фоновом режиме. Суть в том, что iOS автоматически переведет приложение в спящий режим через несколько секунд после того, как вы отойдете от него или заблокируете экран.

Следует помнить, что в iOS нет такой вещи, как "постоянное фоновое состояние". Приложения запускаются в фоновом режиме в течение некоторого ограниченного времени при переходе в приостановленное состояние (чтобы позволить им, например, завершить загрузку / выгрузку), и существуют также фоновые режимы, которые иногда позволяют приложению работать в фоновом режиме, но они обычно резервируются. для очень специфических приложений - например, "звуковой" фоновый режим означает, что приложение может работать в фоновом режиме, пока оно воспроизводит музыку, и т. д. Существует фоновый режим для служб "местоположения", но он зарезервирован для пошагового включить навигационные приложения.

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

Вы также можете взглянуть на этот вопрос:
Получать сигнал от маяка, пока приложение находится в фоновом режиме

Другие вопросы по тегам