Ошибка подтверждения в 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
но не внедрение государственных методов восстановления вызвало исключение.