Ну, иногда вам нужно опубликовать вопрос, чтобы выяснить ответ.В моем периферийном коде у меня было:
func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
let response = "Hey there".data(using: .utf8)
request.value = response
peripheral.updateValue(response!, for: characteristics![0] as! CBMutableCharacteristic, onSubscribedCentrals: [request.central])
}
, которое "считывало" значение из-за метода updateValue, но не закрывало запрос на чтение.Добавление строки:
peripheral.respond(to: request, withResult: .success)
- это правильный способ ответить на запрос чтения и сделать так, чтобы writeValue работал как положено.Правильный периферийный код:
func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
let response = "Hey there".data(using: .utf8)
request.value = response
peripheral.respond(to: request, withResult: .success)
}