Ошибка подтверждения в CBPeripheralManager responseToRequest:withResult

Когда мой iOS (периферийное устройство) начинает рекламу, я немедленно перезапустил свое приложение, и в этот момент мой компьютер (центральный) был в середине подписки на характеристику и записи в нее.

Как только мое периферийное приложение завершает запуск, что-то идет не так (возможно, из-за того, что central ранее пытался записать в него), и мое приложение вылетает с этим сообщением

*** Assertion failure in -[CBPeripheralManager respondToRequest:withResult:], /SourceCache/CoreBluetooth/CoreBluetooth-256/CBPeripheralManager.m:423

Я никогда не вызываю "responseToRequest" в своем коде, все характеристики моего периферийного устройства настроены следующим образом (WriteWithoutResponse):

let properties: CBCharacteristicProperties = [CBCharacteristicProperties.Read, CBCharacteristicProperties.WriteWithoutResponse, CBCharacteristicProperties.Notify]
let permissions: CBAttributePermissions = [CBAttributePermissions.Readable, CBAttributePermissions.Writeable]

Когда я пишу характеристики с конца Centra, я использую:

writeValue(chunkOfData, forCharacteristic: charactristic, type: CBCharacteristicWriteType.WithoutResponse)

Я не уверен, как предотвратить эту проблему. Есть идеи, пожалуйста?

1 ответ

Решение

Из нашего обсуждения кажется, что предоставление CBPeripheralManagerOptionRestoreIdentifierKey и соответствующее значение при инициализации CBPeripheralManager но не внедрение государственных методов восстановления вызвало исключение.

Другие вопросы по тегам