首页 > 解决方案 > iPadOS 13.4 Ble 配对弹出窗口在没有读/写受保护特征的情况下触发

问题描述

在 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")
}

标签: iosswiftcore-bluetoothipadosipados13

解决方案


推荐阅读