使用randdusing bluetoothle插件进行离子应用,需要阅读广告。
ble扫描返回Start Scan Success:
{"address":"14::30:c6:60:e8;9f","name":null,"rssi":-50,"advertisement":"AgEGG/9SVgIADSw5YTNlMTQAAAJlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;=","status":"scanResult"}
查询:需要解密此json数据并将此广告数据转换为包含广告数据十六进制值的数组?广告数据似乎是base64编码的。请指教。
答案 0 :(得分:1)
我为此目的制作了一个小帮手功能,如下所示。关键是$cordovaBluetoothLE.encodedStringToBytes
,您可以在文档https://github.com/randdusing/ng-cordova-bluetoothle中看到。
var encodedToByteString = function encodedToByteString(input) {
var val = $cordovaBluetoothLE.encodedStringToBytes(input);
var byteStr = "";
for (var i = 0; i < val.length; i++) {
var byte = val[i].toString(16);
if (byte.length == 1) byte = "0" + byte;
byteStr += byte;
}
return byteStr;
};
相反的操作也是如此 - 即发送数据。首先需要将十六进制字符串放入一个字节数组中,然后通过$cordovaBluetoothLE.bytesToEncodedString(value)
对其进行编码。