4

我使用下面的代码

[centralManager scanForPeripheralsWithServices:serviceUUIDArray 
         options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] 
         forKey:CBCentralManagerScanOptionAllowDuplicatesKey]] 

扫描外围设备,然后结果在同一个外围设备上返回两次。怎么退货?谢谢。

4

1 回答 1

2

发生这种情况是因为外围设备的名称已更新。在这种情况下,您会再次收到回调。

该线程包含详细说明: http: //lists.apple.com/archives/bluetooth-dev/2013/Apr/msg00099.html

归功于 Etan Kissling:

iOS根据优先级列表缓存设备名称:

  1. 连接后从设备名称特征读取的名称
  2. 广告包中的名称
  3. 无效的

请注意,广告数据包中的名称应该是设备名称特征中最终名称的前缀。

也许物理设备已经缓存了名称,并且没有发送第二次更新,因为它已经检索了名称。

即使您不要求重复,您的应用也应该能够处理它们。

要处理重复,您可以isEqualTo:使用外围设备上的方法检查已经收到的重复,或者使用NSSet存储它们。

于 2013-08-21T20:41:42.420 回答