Я пытаюсь разработать приложение IOS для обнаружения Eddystone, а также iBeacons. Для реализации я использовал как Corelocation, так и Corebluetooth. Я хочу обнаруживать маяки в фоновом режиме и, следовательно, также настраивать фоновый режим. Я наблюдаю, что через несколько минут в фоновом режиме частота сканирования значительно снижается (раз в 5 минут). Есть ли способ установить частоту фонового сканирования для приложений IOS? 5 минут кажутся долгим временем для варианта использования приложения, которое я разрабатываю. Кроме того, есть ли способ разбудить приложение, если в пределах досягаемости находится другой маяк?
Скорость фонового сканирования Eddystone/iBeacon IOS
Ответы (1)
Сканирование устройств BLE на iOS с использованием CoreBluetooth в фоновом режиме может быть относительно медленным, как вы предполагаете. Ваше 5-минутное время обнаружения не является чем-то необычным. Сам по себе CoreBluetooth не дает возможности увеличить эту частоту. CoreLocation, однако, гораздо более оптимизирован для скорости обнаружения, но он ограничен форматом iBeacon.
Одна вещь, которую вы можете сделать, это комбинировать маяки, которые отправляют кадр iBeacon (для скорости) с маяками, которые отправляют кадр Eddystone (для других целей). Если вы начнете искать маяки, когда получите фоновое событие мониторинга iBeacon, вы обнаружите, что время обнаружения Eddystone также ускорилось. Этот трюк позволяет запустить сканирование CoreBluetooth с ранжированием CoreLocation — внутри они действительно одинаковы.