android ios 任何 BLE 的任何唯一密钥(我们正在使用所有 BLE - 不依赖制造商)来识别它

Posted

技术标签:

【中文标题】android ios 任何 BLE 的任何唯一密钥(我们正在使用所有 BLE - 不依赖制造商)来识别它【英文标题】:android ios any unique key for any BLE (We are working with all BLE - no manufacturer dependency) to identify it 【发布时间】:2018-12-27 06:10:51 【问题描述】:

我正在尝试寻找如何在 ios 中获取 BLE mac 的方法???

这将适用于所有 BLE,不会存在制造商依赖性。我们正在寻找扫描时间的解决方案。我可以在扫描时间上区分 BLE 吗?

如果获取 MAC 失败。那么有没有什么常见的东西可以用来识别BLE跨平台,即android ios和web。

提前致谢。

我尝试在 iOS 中使用 UUID,对于相同的 BLE,不同设备总是不同的。 android 提供的 MAC 是独一无二的,但 iOS 没有足够的能力来获得 MAC。

我发现所有 BLE 的共同点是所有 BLE 主要拥有的独特和共同点。

【问题讨论】:

你需要你的外设通过 GATT 特性暴露一些标识符,否则无法跨不同的 iOS 设备识别特定的外设 感谢您的回复。我其实也想要一样的。您能否告诉我如何为我拥有的 BLE 设备设置此 GATT 特性。 我无法提供具体答案,因为这取决于您使用的设备;本质上,您需要修改外围设备的固件,使其具有由特征公开的标识符。 【参考方案1】:

所有蓝牙 LE 广告都包含一个 6 字节的 MAC 地址,该地址通常可用于唯一标识原始硬件设备。如您所见,iOS CoreBluetooth 阻止了读取 MAC 的能力,而是用 16 字节的 UUID 作为标识符。但是,此标识符会定期轮换,因此不能用于唯一标识设备。随着时间的推移,两个不同的标识符可能会来自同一个设备。

这是对 iOS 的隐私限制,没有公共 API 可以绕过它。两个不完美的替代方案:

对于 iBeacon 设备,使用 ProximityUUID/major/minor 的组合。 (甚至是完整的制造商广告。)在某些情况下,这可能不是唯一的,因为多个信标可以宣传同一个标识符。 对于您控制的其他 GATT 设备,让它们公开返回实际 MAC 值的特性。

但这些解决方案都不适用于所有情况下的所有 BLE 设备。

【讨论】:

谢谢。这在某种程度上帮助了我,我现在清楚地知道我无法扫描任何具有唯一 ID 的 BLE。我可以使用核心蓝牙 iOS 扫描以检查我的 MACAddress 是否在我附近吗? 您不能使用 MAC 地址来查找任何使用 iOS 的信标。苹果阻止了它。 非常感谢朋友

以上是关于android ios 任何 BLE 的任何唯一密钥(我们正在使用所有 BLE - 不依赖制造商)来识别它的主要内容,如果未能解决你的问题,请参考以下文章

Android BLE应用开发--部分手机扫描列表不包含任何内容

关于通过 BLE 实现固件 OTA 的任何好的资源?

BLE iOS Nativescript:广播数据失败

NewAer 通过 BLE 发送图像

我可以在 iOS 上模拟 BLE 设备并设置其名称吗? (反应原生)

Java BLE 不返回任何服务