Невозможно обнаружить маяк, когда устройство уже находится в радиусе действия маяка, а затем мы включаем Bluetooth и приложение отключено
Я реализовал Beacon с локальным уведомлением. Все работает нормально для случая, когда Bluetooth включен, а затем устройство входит в диапазон маяков, а приложение находится в состоянии "Не работает". Но когда устройство уже находится в диапазоне радиомаяка, а затем Bluetooth включен, делегат не вызывается. Это ограничение или я что-то упустил?
1 ответ
Это ограничение структуры Core Location.
Когда приложение завершает состояние "Не работает", оно может быть перезапущено из-за событий региона didEnter / didExit региона диспетчера местоположений. Ваш менеджер местоположения не будет получать события входа / выхода из региона, если вы включите и выключите Bluetooth во время завершения работы приложения. Единственный способ вызвать события didEnter / didExit для запуска - это физически войти или выйти из одной из областей вашего маяка, переступив порог их обнаружения.
- Прекращенные приложения будут активироваться при событиях региона didEnter / didExit.
Служба мониторинга региона доставляет события нормально, когда приложение работает на переднем или заднем плане. (Вы можете использовать эту службу как для географических, так и для маяковых регионов.) Для завершенного приложения iOS эта служба перезапускает приложение для доставки событий.
- Ранжирование маяков не разбудит ваше приложение.
(Если свойство notifyEntryStateOnDisplay региона маяка имеет значение true, пробуждение устройства приводит к тому, что приложение начинает маяки в фоновом режиме в течение нескольких секунд.) Эта служба не перезапускает приложения iOS, которые были прерваны; тем не менее, вы можете повторно запустить мониторинг регионов маяка с помощью службы мониторинга региона.