确定设备是否可以传输iBeacons-核心蓝牙

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

我正在尝试获取有关我的设备可以传输的信标类型的信息。我在检测iBeacons时遇到问题。我可以通过Core Location框架检测到此类型,该框架将返回CLBeacon对象。另一方面,我发现使用Core Bluetooth的设备。 CLBeacon和Core Bluetooth提供了已创建的项目UUID。但是有不同的UUID,我看不到映射此值的方法。

我的下一个想法是检测iBeacons是否依赖于函数返回的广告数据

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI 

据我所读,iBeacons会阻止制造的数据和服务数据。而且,无法与iBeacon设备连接。所以我的问题是:

返回设备能否传输iBeacon取决于上面的信息(没有制造的数据,没有服务的数据,设备不可连接)是一个好主意吗?

或者也许有其他方法可以检测iBeacons?如上所述,我正在尝试使用“核心位置”,但我不知道要映射“核心位置”和“核心蓝牙”信息中的值(例如,通过UUID)

ios iot core-bluetooth ibeacon
1个回答
0
投票

不幸的是,在通过CoreBluetooth和CoreLocation检测到的设备之间没有共享标识符。苹果已经竭尽全力使不可能关联来自两个来源的信息:

  • Apple阻止读取由CoreBluetooth检测到的广告中与iBeacon格式匹配的广告中的制造商数据字段。 (即使它可以在其他平台(例如Linux,Windows和Android蓝牙堆栈)上读取,它实际上也会清空数据的内容。)]]

  • Apple为CoreBluetooth设备标识符生成一个伪随机UUID,它在内部将其映射到仅操作系统已知的硬件MAC地址。此蓝牙设备标识符在与iBeacon一起使用的ProximityUUID处具有相同的UUID格式,但对于同一物理设备,两者永远不匹配。

  • 在此阅读我的博客文章:http://www.davidgyoungtech.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons

您不能简单地假设设备是信标,因为您可以通过CoreBluetooth看到它,并且它发出没有数据的制造商广告,并且该设备不可连接。可能是正确的,但事实并非如此。有很多没有信标并且以这种方式运行的蓝牙设备。

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