我目前正在构建一个我想扫描可用设备的 CoreBluetooth 应用程序,问题是“didDiscoverPeripheral”中的 AdvertismentData 字典不包含 CBAdvertisementDataLocalNameKey - 它只包含 CBAdvDataChannel 和 CBAdvDataIsConnectable。这意味着我无法识别我的 BLE 设备。
有趣的是,Lightblue 应用程序(iOS BLE 扫描仪)能够显示名称,因此可能能够访问“CBAdvertisementDataLocalNameKey”。
有谁知道我做错了什么?我真的为此撕毁了我的头发!
这是我的代码的基本示例:
-(void)scan
{
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[mCentralManager scanForPeripheralsWithServices:nil options:options];
}
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
for(id key in advertisementData)
NSLog(@"key=%@ value=%@", key, [advertisementData objectForKey:key]);
}