BLE:通过后台iOS广告本地名称和服务UUID

时间:2019-03-18 14:08:03

标签: ios background core-bluetooth cbperipheralmanager bluetooth-peripheral

根据iOS文档,当使用BLE作为外围设备的iOS应用程序移至后台模式时,外围设备名称不会发布,并且所有服务UUID都放置在特殊的“溢出”区域中,只有iOS才能发现它们明确扫描它们的设备。

当应用程序处于后台时,我嗅到了通过空中发送的BLE数据包。没有本地名称和服务UUID数据。有一个“溢出”区域,对服务UUID进行编码。可以在这里找到简短的讨论:https://github.com/crownstone/bluenet-ios-basic-localization/blob/master/BROADCASTING_AS_BEACON.md

我想知道是否有任何方法可以根据“溢出”区域中的数据确定正在播发的实际服务UUID。 iOS文档指出,当某个应用在后台作为BLE外围设备做广告时,另一个iOS应用可以通过显式指定要扫描的服务UUID来找到它。因此,必须有一种方法可以从溢出数据中找出实际的UUID。

任何有关此的指针都会有所帮助。

1 个答案:

答案 0 :(得分:0)

不。溢出区域中的数据被散列(发送几个128位UUID对于广告包来说太大了)。我不相信哈希是有记载的,但是我强烈怀疑它是基于Bloom过滤器的,因此Apple可以将无限数量的UUID概率打包到非常有限的广告包空间中。

所有这一切的好处是,它意味着数据不在广告包中(实际上是不可能)。您将需要连接到该设备以发现其服务。