Завершенное приложение не активируется с пакетом iBeacon
Можно iOS
Получать iBeacon
пакет в спящем состоянии и разбудить приложение?
Я убил приложение и перезапустил, затем держал телефон в спящем режиме. Когда устройство перезагружалось, устройство находилось в зоне маяка, и после перезагрузки экран устройства оставался выключенным. мой iOS
приложение не просыпается, поэтому я подозреваю, что его не получают iBeacon
пакет.
Я проверил системный журнал и обнаружил, что didEnterRegion
процедура не вызывается.
Работает ли пробуждение приложения в случае принудительного завершения приложения? iOS
Получать iBeacon
пакет в состоянии перезагрузки и немедленного сна?
Если я включаю экран, то он сразу начинает работать, но если после перезагрузки экран выключен, он не получает iBeacon
пакет.
1 ответ
Да, iOS CoreLocation запустит ваше приложение при входе в регион или выходе из региона и работает даже после принудительного завершения после iOS 7.1.1. Вы получите соответствующий обратный вызов, только если настроите CLLocationManagerDelegate
в AppDelegate's didFinishLaunchingWithOptions
метод. Если вы не настроите это в этом методе, то CoreLocation не будет знать, чтобы выполнить обратный вызов после запуска приложения.
Тестирование событий входа при перезапуске приложения может быть немного сложным, поэтому вот несколько советов, чтобы избежать ловушек:
Если критически важно, чтобы ваше приложение считало, что оно было "за пределами" региона, когда оно выполнялось в последний раз. Если он был "внутри" региона, когда он последний раз работал, он не обязательно получит еще один входной обратный вызов, потому что он будет думать, что он никогда не ушел. При тестировании убедитесь, что вы получите
didExit
обратный звонок илиdidDetermineState
обратный вызов, который говорит, что он находится за пределами региона, прежде чем вы убьете приложение или перезагрузите компьютер. Проверьте это сNSLog
оператор, локальное уведомление или какой-либо пользовательский индикатор пользовательского интерфейса, добавленный на экран вашего приложения.Если вы перезагрузите устройство iOS, CoreLocation не будет полностью инициализирован сразу - я видел, что прошло 5 минут после включения экрана, прежде чем я получу какие-либо обратные вызовы. Будьте уверены, что вы подождете достаточно долго.
Как только CoreLocation полностью инициализирован, события входа в область обычно происходят в течение одной секунды после того, как маяк входит в диапазон. Однако, если все ограниченные слоты шаблонов аппаратной помощи Bluetooth полностью заполнены на устройстве (как правило, это происходит, если у вас есть несколько других приложений-маяков, которые использовали их все), тогда события входа возвращаются к программному сканированию, которое происходит только каждые 10 минут или Больше. Событие входа может занять так много времени в такой ситуации. Убедитесь, что вы подождали достаточно долго, прежде чем предположить, что это не работает.