1

我希望我的问题类型不违反问题类型规则!

我正在编写一个蓝牙 iOS 应用程序来控制外围设备(蓝牙扬声器),我希望该应用程序只识别一组独特的蓝牙模块(品牌)。

由于我首先想确定扬声器是否是品牌的一部分,因此我不能依赖某些类型的服务,因为任何其他扬声器也可以拥有它们。我也不能依赖标识符名称,因为它非常肤浅且容易更改。

我最接近的是 UUID 32 十六进制数字的前 16 位代码,即组织唯一标识符 (OUI)。例如,在下图中,D42A8779-F905-BA72-80AAD42A8779-F905-BA72-80AA-3186A18D4453用作品牌外围标识符是否是一种好习惯?

在此处输入图像描述

如果不是,我还能依靠什么?

4

1 回答 1

1

的标识符CBPeripheral对于扫描它的 iOS 设备是唯一的。它不是由蓝牙外围设备本身发送的https://developer.apple.com/documentation/corebluetooth/cbpeer/1620687-identifier

当然,如果您想要做的不仅仅是音频,那么其中一个服务 UUID 将是该设备独有的吗?

您还可以通过查看广告数据来识别,特别是制造商数据:https ://developer.apple.com/documentation/corebluetooth/cbadvertisementdatamanufacturerdatakey

这是CBCentralManagerDelegate didDiscover回调的一部分https://developer.apple.com/documentation/corebluetooth/cbcentralmanagerdelegate/1518937-centralmanager

于 2020-05-10T10:50:47.937 回答