Завершенное приложение не активируется с пакетом iBeacon

Можно iOS Получать iBeacon пакет в спящем состоянии и разбудить приложение?

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

Я проверил системный журнал и обнаружил, что didEnterRegion процедура не вызывается.

Работает ли пробуждение приложения в случае принудительного завершения приложения? iOS Получать iBeacon пакет в состоянии перезагрузки и немедленного сна?

Если я включаю экран, то он сразу начинает работать, но если после перезагрузки экран выключен, он не получает iBeacon пакет.

1 ответ

Решение

Да, iOS CoreLocation запустит ваше приложение при входе в регион или выходе из региона и работает даже после принудительного завершения после iOS 7.1.1. Вы получите соответствующий обратный вызов, только если настроите CLLocationManagerDelegate в AppDelegate's didFinishLaunchingWithOptions метод. Если вы не настроите это в этом методе, то CoreLocation не будет знать, чтобы выполнить обратный вызов после запуска приложения.

Тестирование событий входа при перезапуске приложения может быть немного сложным, поэтому вот несколько советов, чтобы избежать ловушек:

  1. Если критически важно, чтобы ваше приложение считало, что оно было "за пределами" региона, когда оно выполнялось в последний раз. Если он был "внутри" региона, когда он последний раз работал, он не обязательно получит еще один входной обратный вызов, потому что он будет думать, что он никогда не ушел. При тестировании убедитесь, что вы получите didExit обратный звонок или didDetermineState обратный вызов, который говорит, что он находится за пределами региона, прежде чем вы убьете приложение или перезагрузите компьютер. Проверьте это с NSLog оператор, локальное уведомление или какой-либо пользовательский индикатор пользовательского интерфейса, добавленный на экран вашего приложения.

  2. Если вы перезагрузите устройство iOS, CoreLocation не будет полностью инициализирован сразу - я видел, что прошло 5 минут после включения экрана, прежде чем я получу какие-либо обратные вызовы. Будьте уверены, что вы подождете достаточно долго.

  3. Как только CoreLocation полностью инициализирован, события входа в область обычно происходят в течение одной секунды после того, как маяк входит в диапазон. Однако, если все ограниченные слоты шаблонов аппаратной помощи Bluetooth полностью заполнены на устройстве (как правило, это происходит, если у вас есть несколько других приложений-маяков, которые использовали их все), тогда события входа возвращаются к программному сканированию, которое происходит только каждые 10 минут или Больше. Событие входа может занять так много времени в такой ситуации. Убедитесь, что вы подождали достаточно долго, прежде чем предположить, что это не работает.

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