【问题标题】:Why does iOS bluetooth discover the same device more than once?为什么 iOS 蓝牙会多次发现同一设备?
【发布时间】:2015-01-13 20:37:01
【问题描述】:

我正在尝试使用以下语句发现心率监测器:

[self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:SERVICE_HR]] options:@{@"CBCentralManagerScanOptionAllowDuplicatesKey":@NO} ];

SERVICE_HR 定义为心率服务号。

当我阅读文档时,我给出的选项是将同一设备的所有发现合并到一个发现事件中。我正在扫描 2.2 秒,只有一个心率监测器可用,并获得 2 或 3 个发现。由于 HR 监视器每秒发布一次广告,因此如果每个广告都是单独“发现”的,那么这是有道理的。我收到以下回调 2 或 3 次:

 (void)centralManager:(CBCentralManager *)central
 didDiscoverPeripheral:(CBPeripheral *)peripheral
     advertisementData:(NSDictionary *)advertisementData
                  RSSI:(NSNumber *)RSSI

我将每个回调的数据保存到一个可变数组中。这是有两个发现的数组:

(lldb) po [RCLBTLE sharedBTLE].discoveredPeripherals
<__NSArrayM 0x17404bc70>(
<CBPeripheral: 0x1700f8180, identifier = 1DC9167F-6DB8-4216-5217-B1E8B2F3FB90, name = Polar H7 3F1DE71C, state = disconnected>,
<CBPeripheral: 0x1700f8180, identifier = 1DC9167F-6DB8-4216-5217-B1E8B2F3FB90, name = Polar H7 3F1DE71C, state = disconnected>
)

如您所见,同一个设备被发现了两次,但我认为它应该只被发现一次。我究竟做错了什么?还是我误会了什么?

【问题讨论】:

  • 好收获!我搜索但没有找到那个。唯一建议的答案是信号微弱,但我的信号就像 -55 dB 或 -60 dB 应该没问题。我正在重新启动手机以查看他们的其他建议答案,但即使解决了问题,问题仍然是为什么会发生?这是一个已知的 iOS 错误吗?
  • 我重启了手机,从手机中删除了应用程序,并“清理”了 Xcode,但同样的事情发生了。
  • 这不是错误。它是关于当外围设备支持主动扫描时过滤额外的发现数据包。这个答案解释了它:stackoverflow.com/a/11731243/2128900,进一步解释:lists.apple.com/archives/bluetooth-dev/2012/Apr/msg00047.html。即使将CBCentralManagerScanOptionAllowDuplicatesKey 设置为NO,您也会收到多个针对同一外设的委托回调。您只需要在将外围设备添加到数组之前检查它是否已经存在。

标签: ios bluetooth bluetooth-lowenergy core-bluetooth


【解决方案1】:

指定扫描时使用以下代码

[self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID]] options: @{CBCentralManagerScanOptionAllowDuplicatesKey : @NO }];

如果您将上述密钥指定为@YES,那么它会在看到设备时检测到设备。

【讨论】:

  • 如果您仔细阅读原始问题,您会发现我正在使用您建议的代码,但我收到了多个回调。
  • 但这是用于进行单/多检测的代码。发现外设后尝试为 centralmanager 调用 stopScan 并查看它是否仍在多次调用
猜你喜欢
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
相关资源
最近更新 更多