不同 iDevice 的 BLE(蓝牙)名称不同?
Posted
技术标签:
【中文标题】不同 iDevice 的 BLE(蓝牙)名称不同?【英文标题】:A different name for BLE (bluetooth) for a different iDevice? 【发布时间】:2015-04-05 12:06:31 【问题描述】:BLE 有一个非常奇怪的问题。
我们有一些 BLE 硬件,以前的名称叫做“x”。 比我们将该设备名称更改为“y”。(很久以前)
当我们在 iPhone 6 上运行该应用程序时,我们会发现名称为“y”的设备应该是这样的。
当我们在 iPad 上运行应用程序时,我们发现名为“x”的设备!
怎么会这样?
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
NSLog(@"%@",peripheral); //different names !
【问题讨论】:
【参考方案1】:这是因为,同一设备存储在您的旧设备上。当您尝试发现它时,iPad 会从存储的数据中获取名称,而不是从远程(其他设备)请求它来共享它。
当在另一台 iPAD 上时,当它试图找到该设备时,它会询问另一台设备的名称。
现在如果你再次将硬件名称更改为 Z,旧 iPADS 将显示 X、Y 之类的名称。而新设备将显示新名称为 Z。:)
解决方案可以是>>尝试从 iPAS 上的配对设备列表中删除旧设备并重新找到它们。
【讨论】:
【参考方案2】:ios 似乎缓存了CBPeripheral
的name
。它通常不会刷新,直到 iOS 设备重新启动。
作为一种解决方法,您可以在 CBAdvertisementDataLocalNameKey
key 下的 advertisementData
字典中获取最新的名称。
【讨论】:
以上是关于不同 iDevice 的 BLE(蓝牙)名称不同?的主要内容,如果未能解决你的问题,请参考以下文章
Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码)