ios - 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")
}
解决方案
推荐阅读
- python - Python GC 内存压缩
- node.js - 速率限制 - TCP 服务器 (net.Server)
- xcode - SCNView 导出的 Collada (.dae) 文件看起来不同,无法导入到 Blender
- python - 保存空列表时python搁置错误
- z3 - z3py 中函数“from_file()”的问题
- haskell - 在 Visual Studio Code 的 Haskell 中找不到模块“Crypto.Hash.SHA1”
- c - setvbuf 的哪些参数执行与 setbuf(stdin, NULL) 相同的操作?
- javascript - 各种用途的评估 JavaScript
- python-3.x - 如何在“for”循环中的每个错字旁边添加正确的信息?
- windows - 仅限 Windows 10 专业版标准用户帐户