CLLocationManager didRangeBeacons перестает работать на переднем плане

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

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

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

ИЛИ

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

У меня есть CLLocationManager pausesLocationUpdatesAutomatically, установленный в false.

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

ОБНОВИТЬ:

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

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

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

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

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

сделалFailWithError

ранжированиеBeaconsDidFailForRegion

locationManagerDidPauseLocationUpdates

сделалExitRegion

сделалChangeAuthorizationStatus

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
101
1

Ответы 1

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

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

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