我正在使用带有可编程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?
答案 0 :(得分:3)
device you are using是iBeacon。因此,它由iOS专门处理。它没有广告服务或任何它只是广播特定广告。有关结帐详情this page和this SO answer的详细信息。
设备制造商似乎没有提供更新固件的功能,因此您只能使用他们提供的SDK。如果您愿意,可以尝试刷新固件,但不保证设备会接受它或者它将完全运行。 (这类似于更换洗碗机中的固件;您可以尝试但最有可能在最后打破它。)SDK似乎支持iBeacon广告所做的更改或每个参数,因此非常好。
另外,请注意iBeacons应与CoreLocation一起用于位置服务,但通常只能在CoreBluetooth上使用设置功能。参数作为连接后可以发现的服务和特征公开,并通过修改值进行必要的更改。