IOS蓝牙BLE写入值返回“未知错误”

我正在IOS 6上开发我的第一个智能蓝牙(BLE)软件。

我能够接收通知并读取与北欧开发套件交换的特性值,包括我创建的自定义GATT配置文件(具有服务和特性的特定UUID)。

但是,每次我尝试在特征中写入值时,我都会收到错误消息“ Unknown Error而没有更多信息。 没有错误代码,没有来自XCode的CoreBluetooth[WARNING]

我已将我的服务和特性属性权限设置为无需身份validation即可写入。 使用开发北欧工具,我能够在我的特征中写一个值,因此它不会是一个权限问题。

这是我用来编写值的代码

 uint16_t val = 2; NSData * valData = [NSData dataWithBytes:(void*)&val length:sizeof(val)]; [testPeripheral writeValue:valData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse]; 

并且出现错误“未知错误”的回调

  - (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic: (CBCharacteristic *)characteristic error:(NSError *)error { NSLog(@"Did write characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID); NSLog(@"With error: %@", [error localizedDescription]); //code... } 

控制台中的错误文本是

 Did write characteristic value :  with ID Unknown () With error: Unknown error. 

错误信息中的值不是我想写的东西?? !! 444是我用于测试的正确UUID。

写入的值的长度是否重要?

在互联网上看到毛毡并尝试了很多测试之后,我需要把它想出来。 任何建议?

问题出在设备数据库管理中,而不是在IOS端。 但是,如果没有CoreBluetooth的错误代码,很难搞清楚!

你应该检查CBCharacteristic的属性。 如果属性指示特征不可写,您可能会收到此错误。

祝你好运。

sdespont是对的。

我遇到了同样的问题。 只需双击主页按钮并向上滑动即可终止应用程序,然后重新启动它,然后BLE就可以了! 我认为它位于设备数据库管理中,我们应该在调试期间取消连接。