我对BLE这个非常奇怪的问题。
我们有一些名为“x”的BLE硬件。 我们已将设备名称更改为“y”。(很久以前)
当我们在iPhone 6上运行应用程序时,我们会发现名称为“y”的设备应该是这样。
当我们在iPad上运行应用程序时,我们会发现名为“x”的设备!
这怎么可能发生?
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
NSLog(@"%@",peripheral); //different names !
答案 0 :(得分:0)
这是因为,旧设备上存储了相同的设备。当您尝试发现它时,iPad会从存储数据中获取名称,而不是从远程(其他设备)请求它来共享它。
当在另一个iPAD上,当它试图找到该设备时,它会从另一个设备请求该名称。
现在,如果您再次将硬件名称更改为Z,旧的iPADS将显示X,Y等名称。新设备将显示新名称为Z. :)
解决方案可以是>>尝试从iPAS上的配对设备列表中删除旧设备,然后重新找到它们。
答案 1 :(得分:0)
似乎iOS缓存name
的{{1}}。在iOS设备重新启动之前,它通常不会刷新。
要解决此问题,您可以在CBPeripheral
key下的advertisementData
词典中获取最新名称。