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

0

使用 didWriteValueForCharscteristic() 解决了@Paulw11 在评论中建议的问题。谢谢保罗。

于 2021-03-11T22:48:20.083 回答