【发布时间】:2020-09-12 13:59:32
【问题描述】:
在我的 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 的单个设备,并在应用接近或可连接时收到通知。
请注意,许多设备(包括 Apple iPad 等)在广告包中没有 UUID。它们仅在外围信息中具有 UUID。
我尝试了几种方法:
-
有一种 Connect 方法,您可以在其中留下一个连接以请求蓝牙设备在后台等待,回调让您知道设备何时连接,但这不适用于从不连接的 Apple AirPods。
我知道我可以扫描具有已知服务 ID 的设备,如下所示:
scanForPeripherals(withServices serviceUUIDs: [CBUUID(string: GATT ServiceCode]?, options...但我在Bluetooth GATT Services Specifications website 上尝试了每个分配号,但似乎没有一个找到 Apple Airpods 或其他 Apple 设备。
我已经看到其他 iOS 应用程序在包括 Apple AirPods 在内的设备的后台运行,因此必须有一种方法来实现这一点。
【问题讨论】:
-
后台蓝牙扫描所需的 serviceUUID 是该类型的所有设备公布的通用“服务”标识符(针对每个服务)。我认为 AirPods 不会宣传 serviceUUID,因此无法在后台模式下进行扫描。您能否举例说明在后台模式下能够扫描、检测和检测 AirPod 的应用程序?这可能会为它的发生方式提供线索。
-
等等,不。 Above shared app description 有这个:它是如何工作的 -> 1. 打开 Wunderfind。 .. 那是在应用程序处于后台时找不到 airpods。你确定有应用程序在后台找到airpods吗?据我了解这是不可能的。
-
您可以在此应用的 airpods 详细信息中选择“找到时通知”。然后关闭应用程序。一旦你靠近 airpods,它就会向你发送警报。
-
我不认为 wunderfind 像你期望的那样工作(不过,这可能是我的手机/AirPod 版本的影响)。目前,我的 AirPods 就在我旁边,并且奇怪地发现它们最后一次被发现是在 15 分钟前。只有打开 AirPod 保护套,AirPods 才会开始做广告以便被检测到。
标签: ios swift bluetooth core-bluetooth