Как включить сканирование с функцией: extendedScanAndConnect
Я видел, что начиная с iOS 13 мы можем сканировать расширенный рекламный пакет.
В основной документации Bluetooth я нашел:
class func supports(_ features: CBCentralManager.Feature) -> Bool
static var extendedScanAndConnect: CBCentralManager.Feature { get }
но я не знаю, как включить расширенное сканирование?
Может быть, он установлен по умолчанию на устройствах, которые его поддерживают?
Я даже это не могу проверить, потому что у меня нет устройства, поддерживающего это.
Не могли бы вы помочь мне?
1 ответ
Я спросил у Apple об этой функции, вот ответ, который я получил от DTS:
CBCentralManager.Feature.extendedScanAndConnect — это то, что мы называем динамической функцией, которая меняется от модели устройства к модели устройства и может меняться, поскольку в разных моделях могут использоваться разные наборы радиочипов, а поддержка может быть включена или отключена в зависимости от версии iOS.
Таким образом, у нас нет списка, который вы можете использовать, чтобы определить, поддерживается ли он или нет. Вот почему он скрыт за вызовом supportsFeatures(), поэтому ваше приложение может динамически определять устройство, на котором оно работает. Если вы хотите протестировать его, вы можете использовать iPhone 13Pro, у которого есть поддержка. Но чтобы на самом деле иметь возможность использовать эту функцию, рекламное периферийное устройство должно также поддерживать расширенную рекламу и соединения.
Расширенное сканирование и подключение — это возможность уровня ссылки, которая не делает ничего другого для вашего приложения. Информативно только указать, что устройство iOS будет сканировать и распознавать расширенные рекламные пакеты от периферийного устройства. Возможности включают более длинные рекламные пакеты (254 байта против 31), связанные рекламные пакеты для более длинных данных, синхронизированную рекламу. Не все эти функции гарантированно будут включены для всех комбинаций устройства/iOS. Даже если сейчас функция возвращает ДА или НЕТ, не гарантируется, что то же самое устройство вернет тот же результат в будущем.
Единственное отличие в поведении, которое вы можете заметить, — это отсутствие вторичного обратного вызова didDiscover() для объявления, если пакет SCAN_RSP для получения дополнительных данных больше не нужен.