是否可以以编程方式访问CoreBluetooth记录的错误代码?

时间:2013-08-29 08:20:01

标签: iphone ios core-bluetooth

我正在iPhone上实现一个BLE中央设备,使用开发的定制BLE设备作为外围设备(其固件由同事编写)。

某些操作的外设将返回BLE错误代码,符合BLE规范中定义的标准蓝牙ATT错误代码。

在iPhone方面,我正在使用CoreBluetooth堆栈来开发中央设备,我在xCode的调试器输出窗口上收到此类错误的通知:

CoreBluetooth [警告]未知错误:XX

然后我在回调中收到一个CBError *对象。我的问题是我在回调中得到的CBError *对象(例如,在CBPeripheralDelegate的didWriteValueForCharacteristic回调中)只包含code = 0和localizedDescription =“Unknown error”。

是否有可能以某种方式检索CoreBluetooth堆栈在调试器输出窗口上记录的错误代码?

根据我的研究,似乎CoreBluetooth几乎将所有BLE标准错误代码映射到“未知错误”(内部代码为0,请参阅CBError reference);我想获得更详细的错误代码,例如CBAttError编码的错误代码。

1 个答案:

答案 0 :(得分:4)

在应用程序中,您只能使用CoreBluetooth API。那些只暴露CBError,正如你在许多情况下看到的那样可以掩盖真正的错误。因此,正式访问源错误的答案是你不能这样做。

但是,如果需要,可以通过编程方式访问Apple系统日志。 (请参阅帖子:Using Objective C to read log messages posted to the device console)您可以定义查询以返回您感兴趣的项目,并尝试扣除错误的真正原因。这是一种启发式方法,但不幸的是,目前我们没有其他方法可以做到这一点。