0

ペリフェラル マネージャー デリゲートに次のコードがあります。

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() が呼び出されないのはなぜですか?

4

1 に答える 1