gpt4 book ai didi

ios - 蓝牙 : Advertising of UUID from background iOS app

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:53 24 4
gpt4 key购买 nike

正如 iOS 文档所述,当使用 BLE 作为外围设备的 iOS 应用程序进入后台模式时,不会公布本地名称,并且所有服务 UUID 都放在溢出区域中。文档指出它们只能由 iOS 设备发现。

我的总体问题是这在较低级别上究竟是如何发生的。使用非 iOS 蓝牙数据包嗅探器,我检查了我的 iOS 外围应用程序在前台和后台模式下的广告数据结构。前台模式下的广告数据结构看起来符合预期,类似于来自非 iOS 设备的其他广告数据,例如我来自 Android 设备的广告数据。

当 iOS 应用程序处于后台模式时,此结构发生变化并且服务 UUID 不明显。我没有看到任何表明“溢出”区域的迹象。

如果 UUID 不是广告数据包的一部分,iOS 中央设备如何发现处于后台模式的外围设备?

最佳答案

根据Apple documentation,有一个所谓的溢出区.有关 Core Bluetooth concepts 的更多信息,请参见此存档页面.

我已经通过无线方式嗅探了数据包。您可以在 github 上阅读详细信息. iOS 所做的是广播带有代表 UUID 的特定位的自定义包。例如,UUID 3333 由 BLE 包中向上的一位表示。

04 3E 24 02 01 00 01 8C 91 A0 AD 8F 40 18 02 01 1A 14 FF 4C 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 D3

你在这里看到 02 某处被零包围(在 D3 之前是 8 位 RSSI 值)。

每个 UUID 都被单热编码到这个范围内的一个位。这将导致碰撞。您会注意到,如果您用一部 iPhone 发送 1001 并用另一部 iPhone 扫描 3333,您将收到广告,就好像发送了 UUID 3333 .

请注意,关于这个有很多废话。它只是一个普通的无向 BLE 数据包。这不是扫描响应。在后台运行时,我每 0.2 秒可靠地获取一次 BLE 数据包。

enter image description here

时间在 x 轴上(几天)。消息之间的间隔绘制在 y 轴上。您会看到,有时间隔是 0.2 秒的倍数。但是,您还看到这是在三台 iPhone 之间共享的(一台广播 1000,一台广播 FFFF,一台在后台广播 3333 ).这意味着这是接收消息的笔记本电脑的产物。 iPhone 可能比这更坚固。在整个周末,电池电量下降了大约 25%,这很可能与 BLE 广播以外的其他因素有关。

关于ios - 蓝牙 : Advertising of UUID from background iOS app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com