在iOS中无法获取CBPeripheral对象的mac地址。 现在我没有了。具有不同UUID但具有相同外围设备名称的BLE设备。用户必须先通过向该BLE设备注册命令来注册该BLE设备,该设备的QR码扫描时将获得其MAC地址。但是如何像在iOS中那样向未注册MAC的设备用户进行注册呢?
答案 0 :(得分:0)
我实际上已经设计了一些系统,这些系统仅通告MAC的最后一个字节,然后通过连接进行仔细检查以获取完整的MAC。在同一房间内大约有20台设备投放广告之前,您有50%的机会不会发生冲突。如果同一房间中的设备可能少于3个,则发生冲突的机率不到2%(但请记住,这意味着50个情况中有1个发生冲突,因此您不能忽略它)。显然,您包含的字节越多越好。
此设计有一个微妙的角落保护套,可能对您或无关紧要。该设备可能已通过BLE连接到手机。这可能是由于另一个应用程序(例如LightBlue)引起的,也可能是由于您自己的应用程序引起的。假设您连接到设备,然后您的应用消失,然后重新启动。该设备可能仍已连接到手机的BLE系统,并且不会做广告。发现设备的方法是使用retrieveConnectedPeripherals
。但是在那种情况下,您将永远看不到广告包。如果此MAC检查是一次性事件,那么这种情况对您而言可能不是主要问题,但是如果客户抱怨您的应用找不到设备,则要记住这一点。 (最简单的解决方案是重新启动设备,如果不可能,则重新启动电话。)
Paul建议通过特性公开您的MAC是一项必要的工作,但是它相对较慢,并且在实践中有点复杂,因为可能有多个设备在做广告。如果可以的话,我通常会从广告包开始,仅连接到可能正确的设备,然后检查其特性。连接很昂贵。仅在很有可能是对的情况下才进行连接。