iPadOS 13.4 Всплывающее окно Ble Pairing запускается без чтения / записи на защищенную характеристику - PullRequest
1 голос
/ 07 апреля 2020

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

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

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

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

Следующий код инициирует соединение на 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")
}
...