在 iPadOS 13.4 之前,我们需要读取/写入外围设备的受保护特性才能触发配对弹出窗口。启动 iPadOS 13.4 - 密码弹出似乎只是通过与外围设备的成功连接(CBCentralManager().connect(peripheral, options: nil))触发。
我需要进一步与外围设备通信,以便在显示配对弹出窗口之前获取密码。一旦显示配对弹出窗口 - 外围设备将停止响应任何进一步的请求。
这是 13.4 上的设计更改还是错误?我在 Web/Apple 的 iPadOS 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")
}