如何使用iOS CoreBluetooth同时扫描多个BLE服务
我正在尝试为我的iOS应用程序寻找一种好方法来扫描三种不同类型的蓝牙LE外设,每种外设都由一个唯一的服务/UUID表示。CBCentralManager scanForPeripheralsWithServices:options方法采用一组服务uuid,文档中指出,提供此方法时,“中央管理器仅返回播发您指定的服务的外围设备”。然而,我发现这实际上意味着,如果您指定3个服务UUID,那么您将只得到宣传所有这三个服务的外围设备。i、 e.它是一个而不是一个OR:它不会返回在阵列中宣传这些服务的所有外围设备如何使用iOS CoreBluetooth同时扫描多个BLE服务,ios,core-bluetooth,Ios,Core Bluetooth,我正在尝试为我的iOS应用程序寻找一种好方法来扫描三种不同类型的蓝牙LE外设,每种外设都由一个唯一的服务/UUID表示。CBCentralManager scanForPeripheralsWithServices:options方法采用一组服务uuid,文档中指出,提供此方法时,“中央管理器仅返回播发您指定的服务的外围设备”。然而,我发现这实际上意味着,如果您指定3个服务UUID,那么您将只得到宣传所有这三个服务的外围设备。i、 e.它是一个而不是一个OR:它不会返回在阵列中宣传这些服务的所有
我看到的唯一其他选项是为服务uuid数组传递一个“nil”,并且根据文档“返回所有发现的外围设备,不管它们支持的服务是什么(不推荐)”。然后,我可以筛选我正在寻找的三个服务UUID中的任何一个。但苹果似乎是在劝阻我不要这么做,因为它告诉我不推荐这样做。有人知道为什么吗?苹果不建议使用
nil
,因为它效率不高,而且会影响电池寿命
解决方案只是创建三个
CBCentralManager
实例,并让每个实例扫描不同的服务。您甚至可以使用相同的委托实例,因为CBCentralManager
实例被传递给委托方法。Ah。谢谢你,保罗。我试试看