CBPeripheral的名字有时是空的

我正在开发一个应用程序来与蓝牙LE外设通信。 我目前正在testing的外设就是其中之一。 有趣的是,有时当我发现它的时候,我得到它的专有名称“SimpleBLEPeripheral”,有时我只是得到(null) 。 似乎没有任何命令我可以发送给CBPeripheral强制更新名称,所以我怎么才能确保我实际上得到了外设的广告名称?

如果您从advertisingData NSDictionary中获得名称,它将始终是外设发送的广告数据包中的名称。

但是,如果读取CBPeripheral对象的名称属性,则该名称可能会有所不同。 我们试图提供当时知道的最好的名字。 如果我们还没有连接到外设,我们将提供广告数据包的名称。 如果过去连接到外围设备,我们将读取GAP名称。 我们认为GAP名称是一个比广告数据包更好的名称(由于广告数据包的大小限制)。

我发现唯一解决这个问题的方法是开始扫描并停止扫描,并且最终我期望在物理空间中find的所有设备都显示为非零名称和非零UUID。