不同 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 似乎缓存了CBPeripheralname。它通常不会刷新,直到 iOS 设备重新启动。 作为一种解决方法,您可以在 CBAdvertisementDataLocalNameKey key 下的 advertisementData 字典中获取最新的名称。

【讨论】:

以上是关于不同 iDevice 的 BLE(蓝牙)名称不同?的主要内容,如果未能解决你的问题,请参考以下文章

低功耗蓝牙BLE传统广播总结—看这篇就够了

BLE蓝牙想比传统蓝牙区别在哪里

Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码)

低功耗蓝牙(BLE)——概述

Android-Ble蓝牙通讯开发–扫描,连接,发送和接收数据,分包解包(附源码)

BLE在不同设备上的不同外设名称