До 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")
}