我使用 BTLE 对一些 BTLE 设备做出反应,我只需要知道 BTLE 设备何时在一定范围内,我不需要配对,只知道 RSSI 值,
我遇到的问题是
didDiscoverPeripheral
大约是10秒的间隔
我可以更改此间隔时间以使其更短吗?
谢谢!
我使用 BTLE 对一些 BTLE 设备做出反应,我只需要知道 BTLE 设备何时在一定范围内,我不需要配对,只知道 RSSI 值,
我遇到的问题是
didDiscoverPeripheral
大约是10秒的间隔
我可以更改此间隔时间以使其更短吗?
谢谢!
在设备找到新外围设备时调用的 CoreBluetooth didDiscoverPeripheral 方法。您也可以在字典中提供选项,例如:
NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys:@YES, CBCentralManagerScanOptionAllowDuplicatesKey, nil];
将 CBCentralManagerScanOptionAllowDuplicatesKey 设置为 yes 会使 didDiscoverPeripheral 在外围设备的 RSSI 从 previous 更改时被调用。这非常快,就像在几乎毫秒内调用 didDiscoverPeripheral 一样。首先检查您的字典标志是否设置为 YES 。否则你的外设可能有问题。尝试使用不同的外围设备对其进行测试。
我获得了实现两种扫描外围设备的方法的经验。我通常使用选项 CBCentralManagerScanOptionAllowDuplicatesKey:FALSE 进行正常扫描。我总是实现一个名为 targetScan 的方法来扫描特定时间模式的外围设备。所以你可以实现一个间隔为 10 秒的调度定时器。每次调度此计时器并触发带有选项 CBCentralManagerScanOptionAllowDuplicatesKey:TRUE 的“ScanForPeripheral”的方法时,2 秒后您可以退出此特定扫描并使用 CBCentralManagerScanOptionAllowDuplicatesKey:FALSE 调用“正常扫描模式”
希望这可以帮助 !