ペリフェラル マネージャー デリゲートに次のコードがあります。
func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveWrite requests: [CBATTRequest]) {
print ("received write request")
for request in requests {
if request.characteristic.uuid.isEqual(self.primaChar.uuid) {
// extract data from write request
// TODO: validate data
let str = String(data: request.value!, encoding: .utf8)!
print ("received:", str)
peripheralManager.respond(to: request, withResult: .success)
} else {
print ("Unknown write request")
}
}
}
応答コールの後
peripheralManager.respond(to: request, withResult: .success)
didWrite は中央側では呼び出されません
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor descriptor: CBDescriptor, error: Error?) {
#if DEBUG
CLog.debug ("Did write value for \(descriptor.characteristic)")
#endif
}
複数の書き込み要求を開始する必要がありますが、次の書き込み要求を送信する前に、前の書き込みが成功したかどうかを知る必要があります。
両方のデバイスがペアリングされています。
中央マネージャーの didWriteValueFor() が呼び出されないのはなぜですか?