繁体   English   中英

如果我知道iOS中该BLE设备的MAC地址,如何区分该连接到哪个BLE设备外围设备?

[英]How to differentiate to which BLE device's peripheral should I connect If I know mac address of that BLE device in iOS?

在iOS中,无法获取CBPeripheral对象的mac地址。 现在我没有。 具有不同UUID但具有相同外围设备名称的BLE设备。 用户必须先通过向该BLE设备注册命令来注册该BLE设备,该设备的QR码扫描时将获得其MAC地址。 但是,如何在iOS设备中向哪个设备用户进行注册,而我没有在外围设备中获得MAC地址呢?

正如Dorian Roy指出的那样,一个好的基本方法是将MAC编码为广告数据包中制造商特定的数据。 MAC为6个字节,因此,如果尚未在其中存储太多,通常应该有空间。 如果所有设备都具有相同的OUI(制造商前缀),通常可以低3个字节。

实际上,我设计的系统仅宣告MAC的最后一个字节,然后通过连接进行仔细检查以获取完整的MAC。 在同一房间内大约有20台设备投放广告之前,您有50%的机会不会发生冲突。 如果同一房间中的设备可能少于3个,则发生冲突的机率不到2%(但请记住,这意味着50个情况中有1个发生冲突,因此您不能忽略它)。 显然,您包含的字节越多越好。

这种设计有一个微妙的角落情况,可能对您或您都不重要。 该设备可能已通过BLE连接到手机。 这可能是由于另一个应用程序(例如LightBlue)引起的,也可能是由于您自己的应用程序引起的。 假设您连接到设备,然后您的应用消失,然后重新启动。 该设备可能仍已连接到手机的BLE系统,并且不会做广告。 发现该设备的方式是使用retrieveConnectedPeripherals 但是在那种情况下,您将永远看不到广告包。 如果此MAC检查是一次性事件,那么这种情况对您而言可能不是主要问题,但是如果客户抱怨您的应用找不到设备,则要记住这一点。 (最简单的解决方案是重新启动设备,如果不可能,则重新启动电话。)

保罗建议通过特性公开MAC的建议是必要的,但是它相对较慢,并且在实践中有点复杂,因为可能有多个设备在做广告。 如果可以的话,我通常会从广告包开始,仅连接到可能正确的设备,然后检查其特性。 连接很昂贵。 仅在很有可能是对的情况下进行连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM