我在ionic3中使用 Cordova BLE插件。我正在尝试通过扫描kCBAdvDataManufacturerData
来解析TI Sensor Tag
信息,然后才真正与之联系。
当我扫描它时,我在Xcode中看到以下日志:
2017-06-30 12:51:54.308883+0200 MyApp[622:121070] Discovered {
advertising = {
kCBAdvDataIsConnectable = 1;
kCBAdvDataLocalName = "CC2650 SensorTag";
kCBAdvDataManufacturerData = {
CDVType = ArrayBuffer;
data = "DQADAAA=";
};
kCBAdvDataServiceUUIDs = (
AA80
);
kCBAdvDataTxPowerLevel = 0;
};
id = "F674D953-925E-4371-B273-3468D481E936";
name = "CC2650 SensorTag";
rssi = "-39";
}
kCBAdvDataManufacturerData
中的数据字段似乎是base64
编码的,我尝试使用以下函数对其进行解码:
private base64ToBase16(base64) {
return window.atob(base64)
.split('')
.map(function (char) {
return ('0' + char.charCodeAt(0).toString(16)).slice(-2);
})
.join('')
.toUpperCase();
}
当我尝试打电话时:
console.log('stringify:', this.base64ToBase16(device.advertising.kCBAdvDataManufacturerData.data));
它不起作用,它报告
成功时出错callbackId:BLE251402365:TypeError:undefined is 不是一个对象(评估 'device.advertising.kCBAdvDataManufacturerData.data')
任何人都可以帮忙解决这个问题。此外CDVType
中的kCBAdvDataManufacturerData
字段代表什么,因为我只在少数设备中看到此字段,并非所有设备都有此参数。
期待听到您的建议。