Android 无法检测到 iOS 背景 BLE 广告

Ahi*_*Das 8 ios core-bluetooth bluetooth-lowenergy android-bluetooth ios-bluetooth

当一个 iOS BLE 外围设备进入后台状态时,广告数据包不会以常规方式发出,它们被放置在一个特殊的“溢出”区域,只有另一个 iOS 设备明确寻找该设备才能检测到该区域。

蓝牙外设后台执行模式

也就是说,您应该知道,当您的应用程序在后台时,广告的运作方式与您的应用程序在前台时的运作方式不同。特别是,当您的应用在后台投放广告时:

• CBAdvertisementDataLocalNameKey 广告键被忽略,并且外围设备的本地名称不被广告。

• 包含在CBAdvertisementDataServiceUUIDsKey 广告键值中的所有服务UUID 都放置在一个特殊的“溢出”区域中;它们只能被明确扫描它们的 iOS 设备发现。

Android 中心(扫描仪)有什么方法可以检测任何广告的自定义 UUID,而无需连接到 iOS 外围设备?

Emi*_*mil 1

对于“溢出”区域,我猜它们是指扫描响应数据。要获取该数据,设备必须执行主动扫描,而不是被动扫描。在主动扫描中,扫描器在检测到广告数据包后立即发送扫描请求数据包。广告设备仅在检测到扫描请求时才会广播扫描响应数据。

Android 设备仅执行主动扫描,因此应该没问题。

编辑:上面的答案不正确。请参阅http://www.davidgyoungtech.com/2020/05/07/hacking-the-overflow-area了解正确信息。

  • @埃米尔是的。因此基本上不可能破译处于后台状态的 iOS 外设(广告商)发出的广告数据包(更具体地说是溢出区域数据)。 (3认同)
  • @FilipLuchianenco 这取决于你对“看到”的定义在这里。您将能够检测任何状态下的任何设备 - 但是当涉及到在不连接到外围设备的情况下读取自定义 serviceUUID 时,如果外围设备(广告商)是处于后台状态的 iOS 设备并且中央设备(扫描仪)则无法执行此操作) 是非 iOS 设备。 (3认同)