私の iOS (周辺機器) が広告を開始すると、すぐにアプリを再実行します。この時点で、私のコンピューター (中央) は、特性をサブスクライブして書き込みを行っている最中でした。
ペリフェラル アプリの起動が完了すると、何か問題が発生し (おそらく、セントラルが以前に書き込みを試みていたため)、次のメッセージが表示されてアプリがクラッシュします。
*** Assertion failure in -[CBPeripheralManager respondToRequest:withResult:], /SourceCache/CoreBluetooth/CoreBluetooth-256/CBPeripheralManager.m:423
コードで「respondToRequest」を呼び出すことはありません。周辺機器のすべての特性は次のように構成されています (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)
この問題を防ぐ方法がわかりません。アイデアはありますか?