2015-04-24 2 views
0

Я пытаюсь обнаружить iBeacons из состояния приложения Killed на устройствах iOS 7.1 +. На некоторых устройствах (а не на конкретной модели телефона) приложение работает без сбоев.Несоответствующие обнаружения iBeacon

Однако на некоторых устройствах приложение не обнаруживает маяки. Я дважды проверяю настройки на таких устройствах, как службы определения местоположения, разрешения, фоновое приложение, Bluetooth и т. Д.

Я также включил «notifyEntryStateOnDisplay». Поэтому я тестирую, блокируя устройство и снова включаю его. Однако некоторые устройства обнаруживают маяк (батарея также была заполнена).

Я думал, что «notifyEntryStateOnDisplay» приведет к обнаружению iBeacons каждый раз, когда я включил устройство. Что мне здесь не хватает?

ответ

0

Опция notifyEntryStateOnDisplay предназначена для дополнительного обратного вызова didDetermineState:forRegion:, когда пользователь нажимает кнопку плеча, чтобы включить дисплей. Этот обратный вызов может не произойти, когда телефон сначала загрузится. Фактически, мои тесты показывают, что CoreLocation даже не активен в течение первых 60 секунд после первого показа дисплея.

Несколько вещей, чтобы проверить:

  1. Убедитесь, что ваша логика внутри didDetermineState:forRegion: и не didEnterRegion: или didExitRegion:.

  2. При загрузке подождите 60 секунд, прежде чем нажать кнопку плеча и ожидайте результатов.

+0

Возможно, подобное поведение происходит даже после загрузки? – rustylepord

+0

Да, я считаю, вы не можете полагаться на немедленное обнаружение после загрузки, используя 'notifyEntryStateOnDisplay'. Вы должны дождаться запуска CoreLocation, что занимает около минуты после загрузки. Затем нажатие кнопки плеча или кнопки «домой» для подсветки дисплея должно работать по вашему желанию. – davidgyoung

Смежные вопросы