У меня есть приложение для определения радиомаяка, которое ранее работало нормально как на переднем, так и на заднем плане в течение продолжительных периодов времени (дней) Теперь недавно он внезапно перестанет показывать какие-либо маяки даже на переднем плане. Как правило, он будет работать нормально в течение 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 в цикле для имитации изменения местоположения не меняет наблюдаемую ошибку.