我使用以下代码
[centralManager scanForPeripheralsWithServices:serviceUUIDArray
options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]
forKey:CBCentralManagerScanOptionAllowDuplicatesKey]]
扫描外围设备,然后在同一外设上返回两次结果。如何退货?感谢。
答案 0 :(得分:2)
这种情况正在发生,因为外围设备的名称已更新。在这种情况下,您将再次获得回调。
此主题包含详细说明:http://lists.apple.com/archives/bluetooth-dev/2013/Apr/msg00099.html
致Etan Kissling的信用:
iOS根据优先级列表缓存设备名称:
- 连接后从设备名称特征读取的名称
- 来自广告包的名称
- 空
醇>请注意,广告包中的名称应为前缀 设备名称特征中的最终名称。
也许物理设备已经缓存了名称,而不是 发送第二个更新,因为它已经检索了名称。
即使您没有,您的应用也应该可以处理重复项 请求他们。
要处理重复项,您可以使用外设上的isEqualTo:
方法检查已收到的副本,或使用NSSet
进行存储。