CBPeripheral名称有时为null

Dan*_*n F 10 objective-c ios core-bluetooth

我正在开发一个与蓝牙LE外设通信的应用程序.我与目前测试的外设之一这些.有趣的是,有时当我发现它时,我会得到它的正确名称,"SimpleBLEPeripheral",有时候我会得到它(null).似乎没有任何命令可以发送到CBPeripheral以强制对名称进行读取更新,那么如何确保我实际获得外设的广告名称?

pra*_*ant 12

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

但是,如果您读取CBPeripheral对象的name属性,则该名称可能会有所不同.我们试图在当时向我们提供最好的名字.如果我们还没有连接到外围设备,我们将提供广告包的名称.如果过去已与外围设备建立连接,我们将阅读GAP名称.我们认为GAP名称比广告包中的名称"更好"(由于广告包的大小限制).

  • 我能够在核心蓝牙框架参考中找到该名称的密钥.它是一个名为`CBAdvertisementDataLocalNameKey`的const. (2认同)