CLLocationManager didRangeBeacons перестает работать на переднем плане - PullRequest
0 голосов
/ 12 марта 2019

У меня есть приложение для определения радиомаяка, которое ранее работало нормально как на переднем, так и на заднем плане в течение продолжительных периодов времени (дней) Теперь недавно он внезапно перестанет показывать какие-либо маяки даже на переднем плане. Как правило, он будет работать нормально в течение 18–20 минут, затем остановитесь и покажите, что мои маяки ранжируются со значением 0 RSSI (просмотр с использованием сообщений отладки в окне журнала xcode), даже если маяки находятся всего в нескольких шагах и предварительно регистрируют значения RSSI. -60. Через несколько секунд он будет продолжать запускать событие didRangeBeacons каждую секунду, но с пустым массивом маяков.

Я видел другой поток здесь о том, что в iOS 12.1 была ошибка, приводившая к остановке ранжирования в фоновом режиме, и что в 12.2 бета 2 было исправлено, поэтому я обновил iPad, который использую для тестирования, с 12.1 до 12.2 бета 4, но проблема остается.

Когда устройство перейдет в это состояние, я могу остановить приложение и перезапустить его, и оно будет работать снова в течение примерно 20 минут:

OR

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

У меня есть CLLocationManager pausesLocationUpdates, автоматически установленный в false.

Звучит так, будто Bluetooth отключается, но это очень сбивает с толку.

UPDATE:

Я видел, что приложение будет работать часами в фоновом режиме, если экран выключен / заблокирован. Он перестает работать, только если экран включен, на переднем или на заднем плане.

Я попытался сбросить тестовый iPad, а также сбросить настройки сети и разрешения на доступ без изменений в наблюдаемой производительности.

Это похоже на ту же самую ситуацию, которая произошла, когда Apple впервые выпустила iOS 10 и пробила диапазон радиомаяков.

ОБНОВЛЕНИЕ 2:

Проверка следующих событий CLLocationManager, и ни одно из них не запускается при прекращении диапазона:

didFailWithError

rangingBeaconsDidFailForRegion

locationManagerDidPauseLocationUpdates

didExitRegion

didChangeAuthorizationStatus

Кроме того, запуск файла gpx в цикле для имитации изменения местоположения не меняет наблюдаемую ошибку.

1 Ответ

0 голосов
/ 02 апреля 2019

Обнаружили, что эта проблема связана с аппаратным обеспечением. Тестирование на iPad Mini имеет проблему, в то время как тестирование на iPhone XS - нет (оба используют ОС 12.2).

И, как ни странно, использование iBeacons от другого производителя (но с идентичными настройками рекламы) также решило бы проблему. В этом случае использование iPad или телефона будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...