CoreBluetooth: -didWriteValueForCharacteristic:error: is called after writing to notifiable characteristic without response, sometimes with an error
| Originator: | zmicier.zaleznicenka | ||
| Number: | rdar://28361753 | Date Originated: | 19-Sep-2016 |
| Status: | Duplicate | Resolved: | |
| Product: | iOS | Product Version: | 10 |
| Classification: | Bluetooth | Reproducible: | Always |
Closed as duplicate of 28170671 (Closed)
Area:
Bluetooth
Summary:
According to CoreBluetooth specification, writing to a notifiable characteristic configured without response shouldn't trigger -didWriteValueForCharacteristic:error: callback. In iOS9 this seems to work according to the spec, the callback is triggered only after the writes requiring a response. In iOS10, every single write to a notifiable characteristic configured to not requiring a response leads to -didWriteValueForCharacteristic:error: being called. Mostly it fires without an error, but sometimes, after the link is fully utilized, this callback returns with the following error.
Error Domain=CBATTErrorDomain Code=114 "Unknown ATT error." UserInfo={NSLocalizedDescription=Unknown ATT error.}
Steps to Reproduce:
Configure a BLE connection to a peripheral device.
Start writing to a notifiable characteristic without response.
Observe -didWriteValueForCharacteristic:error: delegate method triggered after every write.
Expected Results:
No callback should be triggered if writing without response.
Actual Results:
After every write, -didWriteValueForCharacteristic:error: is triggered.
Version:
iOS 10.0.1
Notes:
Configuration:
iPhone 5S, BLE peripheral based on Android 5.1
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!