我如何才能知道BLE特性是否在未读取的情况下被加密?

时间:2019-01-29 06:36:43

标签: ios swift bluetooth bluetooth-lowenergy

所以我有1个管理员和1个外围设备。 在外围设备端,我发送了一个具有CBCharacteristicProperties.notifyEncryptionRequiredCBCharacteristicProperties.indicateEncryptionRequired属性的特征, 与此行:

char = CBMutableCharacteristic(type: charId, properties: CBCharacteristicProperties(rawValue: 0b1100000000), value: nil, permissions: [CBAttributePermissions.readEncryptionRequired, CBAttributePermissions.writeEncryptionRequired])

但是当我在中央阅读时,它只会给我

0b0000110000

这将转换为notifyindicate属性。 为什么没有给我0b1100000000?有什么我想念的吗?

我要尝试的是检查我搜索的值是否已加密而不配对。

当我尝试读取一个值时,如果它是加密的,则需要配对。将会出现配对对话框。因为出现了配对对话框,所以我知道它已加密。我想知道特征是否已加密而没有看到对话。

1 个答案:

答案 0 :(得分:0)

我可以告诉你,我曾经在nRF connect中看到服务记录,它直接向我表明服务已加密。但是我不知道他们是怎么做到的。它背后的堆栈是Linux上的BlueZ。我认为可能将其标记在服务记录中。

此外,我可以告诉您大多数设备都不这样做。我正在耳机CSR控制器上实施固件。它上面的堆栈不提供执行此操作的API。由于我拥有固件和受我控制的应用程序,因此我可以告诉你:使用此芯片,无法知道特征是否已加密。
令人遗憾的是,这种芯片广泛传播。