我目前正在构建一个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]);
}
发布于 2015-04-08 01:29:56
尝试使用发现的外围设备的name属性,而不是使用通告数据:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
NSString *thePeripheralName = peripheral.name;
}
发布于 2020-09-14 05:15:20
我没有答案,但我至少可以确认我在我的iOS应用程序中看到了同样的事情。这对于苹果的实现来说是特殊的吗?
在连接到外围设备并获得org.bluetooth.characteristic.manufacturer_name_string的CBCharacteristic之前,我看不到任何制造商名称数据
https://stackoverflow.com/questions/29486069
复制相似问题