首页 文章

可以获得iBeacon的扫描响应

提问于
浏览
2

我正在使用iOS 8.4中的Core Bluetooth API . 我的代码与被编程为iBeacon的BLE设备进行交互 . 这是我通过实现CBCentralManager协议的didDiscoverPeripheral回调函数生成的日志语句:

2015-09-04 16:23:08.231 CentralManager - 用数据[[kCBAdvDataIsConnectable:0]]发现外设[CBPeripheral:0x1742e0b80,identifier = 8B63C7F8-44D5-F3E2-AD40-2916A2513BA9,name = DfuTarg,state = disconnected]

logging语句打印函数的peripheral和advertisementData参数的值 . 请注意,打印外围设备的名称(顺便说一句:我碰巧知道DfuTarg是正在扫描的设备的正确名称) .

iOS从哪里获得此名称?它不是广告包的一部分 . 它必须来自二次扫描请求/扫描响应交换,是吗?我的代码是否可以访问扫描响应?

1 回答

  • 1

    是的, CBPeripheral 名称来自扫描响应 . 当检测到广告时,CoreBluetooth会自动请求扫描响应数据(至少在应用程序位于前台时) .

    当设备接收到两者时,使用来自初始通告和扫描响应的信息调用 didDiscoverPeripheral 方法 . 实质上,您已使用该回调方法访问扫描响应信息 .

    需要注意的重要一点是,当广告被识别为iBeacon时,您无法访问此回调中的原始制造商数据 . iOS将其删除,因此您无法访问它 . 这适用于广告和扫描响应中存在的制造商数据字节 .

    有关详细信息,请参阅here .

相关问题