具有已知外围UUID的蓝牙设备的后台扫描

问题描述 投票:0回答:1

在我的iOS应用中,当我扫描蓝牙设备时,我从附近的每个设备看到外围UUID和其他数据,如下所示:

(uuid: 58B95943-A57E-F818-D3CC-9F8122C64D88, name: "iPad Pro"), advertisementPacket: ["kCBAdvDataRxSecondaryPHY": 0, "kCBAdvDataRxPrimaryPHY": 1, "kCBAdvDataIsConnectable": 1, "kCBAdvDataTimestamp": 612132622.292843, "kCBAdvDataTxPowerLevel": 12], rssi: -37

然后,我希望继续在后台扫描具有特定UUID的单个设备(关闭应用程序时。)>

我正在尝试这样做:

scanForPeripherals(
withServices serviceUUIDs: [CBUUID(string: "58B95943-A57E-F818-D3CC-9F8122C64D88"]?,            
options: ........

这不会产生任何结果。

[看起来,我不能仅将设备UUID转换为CBUUID。如果是这样,如何将UUID转换为适当的服务UUID?

[此外,某些地方提到在后台,您只能扫描广告包中的UUID。但是,当我扫描时,我看不到广告包中存在任何UUID。所有常用设备(Apple Watch,Mac Mini,iPad Pro等)在外围设备信息中均具有UUID,而不是广告数据。

似乎还没有一种方法可以在每个设备中找到任何数据,然后我可以用它们来在Bluetooth网站上标识其类别以确定其服务标识符。

[在我的iOS应用中,当我扫描蓝牙设备时,我从附近的每个设备中看到外围UUID和其他数据,如下所示:(uuid:58B95943-A57E-F818-D3CC-9F8122C64D88,名称:“ iPad Pro”), ...

ios swift bluetooth core-bluetooth
1个回答
0
投票

您正在将设备标识符与服务标识符混淆。您为iPad Pro显示的UUID是由Core Bluetooth在that]设备上为that]设备分配的标识符。世界上所有其他iOS设备将为该iPad收到一个不同的标识符。

© www.soinside.com 2019 - 2024. All rights reserved.