【发布时间】:2014-05-15 00:28:38
【问题描述】:
我正在创建一个应用程序,它可以获取范围内所有 BLE 设备的 UUID。我已经让它在 Android 中运行良好,它以字节数组的形式提供广告数据。现在我正在尝试在 iOS 中做同样的事情。
我正在运行扫描,它正在检测设备,并且在回调中有一个名为 adsData 的 NSDictionary。但里面唯一的信息如下:
kCBAdvDataChannel = 39;
kCBAdvDataIsConnectable = 1;
kCBAdvDataLocalName = jaalee;
kCBAdvDataTxPowerLevel = 0;
我认为我应该获得整个广告包的想法是否正确?如果没有,我怎样才能得到它?
【问题讨论】:
-
您不能,除非 BLE 设备在其广告数据中明确添加其他信息。
Core-Bluetooth提供高级实现。你还想要什么其他信息? -
Corebluetooth 提供了 CBPeripheral 对象。
identity属性提供 UUID,它等同于但不是 MAC 地址。 UUID 也可以定期更改,尤其是在外围设备是 iOS 设备时 -
另外,我注意到您标记了您的问题 [ibeacon] - 您是否尝试收集 BLE 外围设备或 iBeacons - 在 iOS 上,前者由 CoreBluetooth 框架处理,后者由 CoreLocation 框架处理跨度>
-
这适用于所有 BLE 设备,包括 iBeacons。 CBPeripheral 对象没有标识属性——它有一个标识符属性,但这只是 iOS 内部的一个临时标识符。我需要 BLE 设备在其广告中广播的内容。
-
基本上,在 iOS 上,您不能执行“所有 BLE 设备,包括 iBeacons”——您必须为具有服务的通用可连接设备与仅广告 iBeacons 使用不同的 API。
标签: ios objective-c bluetooth-lowenergy ibeacon