如何让CC2541在广告数据中包含kCBAdvDataServiceUUIDs

时间:2013-12-31 05:29:00

标签: ios bluetooth bluetooth-lowenergy core-bluetooth

我正在使用带有可编程BLE设备的核心蓝牙( CC2541 )。我正在尝试使用这样的特定服务扫描外围设备:

CBUUID* serviceID = [CBUUID UUIDWithString:  @"adabfb00-6e7d-4601-bda2-bffaa68956ba"];
[self.manager scanForPeripheralsWithServices:@[serviceID] options:nil];

我是空的,但是如果我将'scanForPeripheralsWithServices:'设置为 nil ,那么我会把所有的BLE设备都拿出来。所以我知道BLE正在发送广告。

以下是我从advertisementData

登录centralManager:didDiscoverPeripheral:advertisementData:RSSI:时收到的内容
AdvData: {
    kCBAdvDataChannel = 38;
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataLocalName = "JhBC_ZDHTMDRNg";
    kCBAdvDataTxPowerLevel = 0;
}

我希望 kCBAdvDataServiceUUIDs 能像我的其他BLE设备一样出现,但CC2541似乎没有公布这个值。

kCBAdvDataServiceUUIDs =     (
    "Unknown (<adabfb00 6e7d4601 bda2bffa a68956ba>)"
);

如何让CC2541宣传自定义UUID?

1 个答案:

答案 0 :(得分:3)

device you are using是iBeacon。因此,它由iOS专门处理。它没有广告服务或任何它只是广播特定广告。有关结帐详情this pagethis SO answer的详细信息。

设备制造商似乎没有提供更新固件的功能,因此您只能使用他们提供的SDK。如果您愿意,可以尝试刷新固件,但不保证设备会接受它或者它将完全运行。 (这类似于更换洗碗机中的固件;您可以尝试但最有可能在最后打破它。)SDK似乎支持iBeacon广告所做的更改或每个参数,因此非常好。

另外,请注意iBeacons应与CoreLocation一起用于位置服务,但通常只能在CoreBluetooth上使用设置功能。参数作为连接后可以发现的服务和特征公开,并通过修改值进行必要的更改。