我正在编写一个需要使用iOS CBPeripheral
将字节值写入CoreBluetooth
的应用程序。我能够读取值,并且写入成功,并且像应该的那样触发didWriteValueFor
委托。基本上,它确实有效,但 But 却需要很长时间(大约3秒,报告超过10次)。当我在另一个应用程序(nRF Connect)中测试写入过程时,写入几乎是瞬时的。这是我用来写特征的代码:
func setConfigurationValue(_ i:UInt8){
guard peripheral != nil, configurationStateCharacteristic != nil else { return }
var vint:UInt8 = i
let intData = Data(bytes: &vint, count: MemoryLayout<UInt8>.size)
isWriting = true
peripheral?.writeValue(intData, for: configurationStateCharacteristic!, type: CBCharacteristicWriteType.withResponse)
// Notify any views that they should show a progress overlay
NotificationName.showProgressOverlay.post(userInfo: ["message":"Device configuring".localized], object: self)
}
请注意,peripheral
是对CBPeripheral
对象的存储引用,而configurationStateCharacteristic
是对我正在写的CBCharacteristic
的引用。这段代码确实有效,但是是什么导致外围BLE设备花费这么长时间写入数据并发送响应呢?
有什么想法吗?