scanForPeripheralsWithServices:在同一外设上返回两次结果

时间:2013-08-21 03:57:12

标签: ios core-bluetooth cbcentralmanager

我使用以下代码

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

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

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为外围设备的名称已更新。在这种情况下,您将再次获得回调。

此主题包含详细说明:http://lists.apple.com/archives/bluetooth-dev/2013/Apr/msg00099.html

致Etan Kissling的信用:

  

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

     
      
  1. 连接后从设备名称特征读取的名称
  2.   
  3. 来自广告包的名称
  4.   
  5.         

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

         

    也许物理设备已经缓存了名称,而不是   发送第二个更新,因为它已经检索了名称。

         

    即使您没有,您的应用也应该可以处理重复项   请求他们。

要处理重复项,您可以使用外设上的isEqualTo:方法检查已收到的副本,或使用NSSet进行存储。