我正在寻找一款心率监测器,根据以下声明:
[self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:SERVICE_HR]] options:@{@"CBCentralManagerScanOptionAllowDuplicatesKey":@NO} ];
SERVICE_HR被定义为心率服务号码。
根据文档,我给出的选项是将同一设备的所有发现合并为单个发现事件。我正在扫描仅有一个心率监测器的2.2秒,并且得到2或3个发现。由于心率监测器每秒广告一次,如果每次广告都被单独“发现”,这就很有道理了。我会收到以下回调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>
)
您可以看到同一设备被发现了两次,但我认为它只应该被发现一次。我做错了什么?还是我理解错了什么?