ccp*_*ark 5 bluetooth ios core-bluetooth bluetooth-lowenergy ibeacon
我正在使用蓝牙低功耗设备,我想知道是否可以在没有连接的情况下将扫描响应数据读取到具有iOS和Core蓝牙的广告.
我知道在阅读广告数据包后,您可以以31字节扫描响应的格式从外设请求其他数据.我知道Core Bluetooth建议如果广告包已满,您可以将本地名称放在扫描响应数据包中,但它是否允许您查看整个数据包?
dav*_*ung 13
是的,您可以使用CoreBluetooth读取BLE广告的完整字节,只要它不是iBeacon广告. 如果它是iBeacon广告,CoreBluetooth将阻止您查看字节的能力.您使用的回调如下:
- (void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
Run Code Online (Sandbox Code Playgroud)
原始字节将出现在NSDictionary *advertisementData.但他们关键持有这些数据将被iBeacons的操作系统删除.
这是你NSDictionary在回调中的advertisementData 中得到的一个例子.此示例用于检测AltBeacon广告(开源信标标准),标识符为2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 2
{
kCBAdvDataIsConnectable = 0;
kCBAdvDataManufacturerData = <1801beac 2f234454 cf6d4a0f adf2f491 1ba9ffa6 00010002 be00>;
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看AltBeacon规范,了解如何解码上述字节.
有关无法读取iBeacon数据的原因以及显示如何设置的其他代码的详细信息,请参阅此处:
http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html
我正在使用具有一些制造商数据的外围设备,我认为这些数据会在扫描响应中传输,因为在带有128位UUID加上通道,RSSI和可连接标志的初始广告中没有空间容纳这些数据。我正在快速连续收到两次对didDiscoverPeripheral:...的调用(相隔3ms,包括我代码中的一些处理时间)。第一个在字典中没有kCBAdvDataManufacturerData键,但是第二个却在字典中。我假设扫描应答时被自动请求,并在第二个电话回复结果。
| 归档时间: |
|
| 查看次数: |
20786 次 |
| 最近记录: |