我有一个TI传感器Tag作为外设,以kCBAdvDataManufacturerData的形式广播BLE数据.我想从iOS中的这些数据中提取不同的值.
我在Swift中执行以下操作:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){
for (index, foundPeripheral) in peripherals.enumerated(){
if foundPeripheral.peripheral?.identifier == peripheral.identifier{
peripherals[index].lastRSSI = RSSI
print("AdvertisementData:\(advertisementData)")
return
}
}
let isConnectable = advertisementData["kCBAdvDataIsConnectable"] as! Bool
let displayPeripheral = DisplayPeripheral(peripheral: peripheral, lastRSSI: RSSI, isConnectable: isConnectable)
peripherals.append(displayPeripheral)
tableView.reloadData()
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我在控制台中看到的:
AdvertisementData:["kCBAdvDataIsConnectable":0,"kCBAdvDataManufacturerData":<0d00fe05 0c6f32>,"kCBAdvDataLocalName":CLIMBC]
我有兴趣解码的数据是kCBAdvDataManufacturerData:<0d00fe05 0c6f32>并在屏幕上显示每个字段.具体来说,这就是数字代表我的情况:
在Android中,我可以解码如下:
private static String getNodeIdFromRawPacket(byte[] manufSpecField) {
if(manufSpecField != null && …Run Code Online (Sandbox Code Playgroud)