iPadOS 13.4 Всплывающее окно сопряжения Ble запущено без чтения / записи для защищенной характеристики

До iPadOS 13.4 нам нужно было читать / записывать защищенные характеристики периферийного устройства, чтобы вызвать всплывающее окно сопряжения. Начиная с iPadOS 13.4 - всплывающее окно с паролем, похоже, запускается просто при успешном подключении к периферийному устройству (CBCentralManager(). Connect(периферийное устройство, параметры: nil)).

Мне нужно дополнительно связаться с периферийным устройством, чтобы получить код доступа до отображения всплывающего окна сопряжения. После отображения всплывающего окна сопряжения периферийное устройство перестает отвечать на дальнейшие запросы.

Это изменение дизайна или ошибка в 13.4? Я ничего не могу найти в примечаниях к выпуску iPadOS 13.4 в Интернете / от Apple.

Если это изменение дизайна - как с этим справиться?

Следующий код запускает сопряжение на периферийном устройстве didConnect: // Пример кода

var centralManager: CBCentralManager?
var peripheral: CBPeripheral?

override func viewDidLoad() {
    super.viewDidLoad()
    centralManager = CBCentralManager(delegate: self, queue: nil)
}

func centralManagerDidUpdateState(_ central: CBCentralManager) {
    switch central.state {
    case .poweredOn:
        print("CentralManager state: Powered On")
        centralManager?.scanForPeripherals(withServices: [advertisingUUID], options: nil)
        print("Scanning for peripherals...")
    default:
        print("CentralManager state: Powered Off")
    }
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
       self.peripheral = peripheral
       self.peripheral?.delegate = self
       centralManager?.connect(peripheral, options: nil)
       centralManager?.stopScan()
}

func centralManager(_ central: CBCentralManager,
                           didConnect peripheral: CBPeripheral) {
    print("Peripheral Connected")
}

func centralManager(_ central: CBCentralManager,
                    didDisconnectPeripheral peripheral: CBPeripheral,
                    error: Error?){
    print("Peripheral Disconnected")
}

0 ответов

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