我正在开发一款与蓝牙LE外设进行通信的应用。我正在测试的外围设备是these之一。有趣的是,有时当我发现它时,我会得到它的正确名称“SimpleBLEPeripheral”,有时候我得到(null)
。似乎没有任何命令可以发送到CBPeripheral以强制对名称进行读取更新,那么如何确保我实际获得外设的广告名称?
答案 0 :(得分:12)
如果从advertisingData NSDictionary获得名称,它将始终是外围设备发送的广告数据包中的名称。
但是,如果您读取CBPeripheral对象的name属性,则该名称可能会有所不同。我们试图在当时向我们提供最好的名字。如果我们还没有连接到外围设备,我们将提供广告包的名称。如果过去已与外围设备建立连接,我们将阅读GAP名称。我们认为GAP名称比广告包中的名称“更好”(由于广告包的大小限制)。
答案 1 :(得分:3)
我发现解决这个问题的唯一办法是开始扫描并停止扫描,最终我希望在物理空间中找到的所有设备都显示非零名称和非零UUID。