首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CoreBluetooth AdvertisementData不包含CBAdvertisementDataLocalNameKey?

CoreBluetooth AdvertisementData不包含CBAdvertisementDataLocalNameKey?
EN

Stack Overflow用户
提问于 2015-04-07 15:23:47
回答 2查看 2.1K关注 0票数 3

我目前正在构建一个CoreBluetooth应用程序,我想扫描可用的设备,问题是"didDiscoverPeripheral“中的AdvertismentData字典不包含CBAdvertisementDataLocalNameKey -它只包含CBAdvDataChannel和CBAdvDataIsConnectable。这意味着我无法识别我的BLE设备。

有趣的是,Lightblue应用程序(一个iOS BLE扫描仪)能够显示名称,因此可以访问"CBAdvertisementDataLocalNameKey“。

有人知道我做错了什么吗?我真的要为这事抓狂了!

以下是我的代码的基本示例:

代码语言:javascript
运行
复制
-(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]);
}
EN

回答 2

Stack Overflow用户

发布于 2015-04-08 01:29:56

尝试使用发现的外围设备的name属性,而不是使用通告数据:

代码语言:javascript
运行
复制
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
    NSString    *thePeripheralName  = peripheral.name;
}
票数 2
EN

Stack Overflow用户

发布于 2020-09-14 05:15:20

我没有答案,但我至少可以确认我在我的iOS应用程序中看到了同样的事情。这对于苹果的实现来说是特殊的吗?

在连接到外围设备并获得org.bluetooth.characteristic.manufacturer_name_string的CBCharacteristic之前,我看不到任何制造商名称数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29486069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档