我正在为特定类型的蓝牙设备(读卡器)编写一个简单的设备浏览器。我知道您应该将CBUUID指定的服务数组传递给scanForPeripherals(withServices:options:)
方法。
要查找这些ID,我已经在没有服务过滤器的情况下进行扫描,找到了我的设备,并查看了advertisementData["kCBAdvDataServiceUUIDs"]
我发现单个64位CBUUID的地方,如下所示:0x00000001c413e940
如何将此字符串转换为可以作为服务过滤器传入的有效CBUUID?我已经尝试了CBUUID(string:)
初始化程序,但它只是抛出一个运行时异常,说它不是有效的UUID。
我也查看了该设备的参考手册,并找到了下表:
但是,这些似乎都不起作用 - 在通过这些服务UUID进行过滤时,扫描中不会显示任何设备。
最后,当我在LightBlue中检查设备时,它报告1个服务广播(FFF0
),但是当我尝试按此服务进行过滤时,没有设备显示。
我开始认为服务过滤器很简单。有没有人真正使用它?
更新:有效!我重建并重新安装了该应用,并且在使用FFF0
的服务过滤器扫描时出现了该设备。感谢Paulw11的帮助。