Уменьшение порога didEnterRegion
В настоящее время я работаю над приложением, которое я хочу, чтобы мое приложение обнаруживало маяк в фоновом режиме, как только оно близко к нему (Немедленно). Исходя из статей, которые я прочитал, это нельзя сделать с помощью didEnterRegion, и я должен использовать ранжирование, пока оно работает в фоновом режиме (Location Update). Есть ли решение, которое напрямую снижает порог didEnterRegion? или я должен использовать другой метод? и если это так, то работает ли он как didEnterRegion, но с ограниченным диапазоном RSSI? работает, когда мой телефон вошел в регион и заблокирован, а экран выключен?
1 ответ
API-интерфейсы мониторинга не позволяют контролировать расстояние, на которое вы получаете обратные вызовы обнаружения. Вы всегда получаете обратный вызов в первый раз, когда маяк попадает в радиус действия радиолокатора, обычно на расстоянии около 40 метров.
Есть два способа срабатывания на маяках только с близкого расстояния:
Настройте более низкую мощность радиопередачи на вашем маяке, если производитель поддерживает это.
Комбинируйте API-интерфейсы ранжирования с мониторингом и выполняйте как можно более длительный диапазон в фоновом режиме (не более 180 секунд на iOS без специальных фоновых разрешений), а затем запускайте логику, когда обратный вызов ранжирования сообщает, что поле точности CLBeacon является немедленным.
Вариант 1 является более простым, но менее надежным, поскольку он часто срабатывает на больших расстояниях, чем вы хотели, и иногда имеет проблемы с срабатыванием вообще даже на очень близком расстоянии.
Вариант 2 является более надежным, пока не истекает время изменения фона. Если радиостанция телефона срабатывает на расстоянии 40 метров, чтобы начать дальномер, если пользователю требуется более 180 секунд, чтобы добраться до непосредственной близости, то время дальности истекает, и ты не можешь получить триггер, пока маяк не исчезнет и не появится снова, чтобы сбросить разрешенное время дальности,