在低功耗蓝牙中安全配对之前,隐藏服务是否符合规范?

Is it in spec to have hidden services until after securely paired in Bluetooth Low Energy?

正在开发一个 BLE 应用程序,在我安全地 paired/bonded 到有效设备之前,我不想公开某些服务。问题是在发现过程中,似乎所有主要服务都暴露给客户端,以便它完成连接。无论如何要隐藏一些服务直到以后?

如果您想使用标准配置文件,我不这么认为。我能想到的唯一解决方案是自定义配置文件,它封装了您不想公开的数据。即使在这种情况下,UUID 也是可见的。

您可以在连接时动态更改 GATT 数据库的内容。 GATT 服务和 GATT "Service Changed" 特性将用于通知客户此类更改([Vol 3, Part G], 7.1)。

绑定前隐藏服务不会增加任何有用的东西,因为只有经过身份验证的访问服务。在这两种情况下,您都需要绑定才能使用它,但在实现中更好地测试管理访问权限而不是处理 GATT 数据库更改(如果完全支持)。

所以是的,理论上,您可以在绑定后更改 GATT 数据库中公开的服务,但我不想依赖它。