uni.onBLECharacteristicValueChange在支付宝环境返回的参数不一致,导致程序在支付宝小程序走不通,但是大部分的api都兼容,这种情况我要单独针对这一个换成支付宝原生的api吗?还是统一都换成支付宝的。参数如下:
uni.onBLECharacteristicValueChange api
支付宝小程序工具返回:
{
NBPageUrl: "https://2021005137623614.hybrid.alipay-eco.com/index.html#pages_Devices/devices/devicesSetUp?appxPageId=2&isConnected=false&id__=2"
characteristicId: "00002b10-0000-1000-8000-00805f9b34fb"
deviceId: "DC:23:4F:C1:33:E9"
serviceId: "00001910-0000-1000-8000-00805f9b34fb"
value: "00713004C5A30FBA764E6289CA71DF705ACC102F"
}
app返回参数(app基座)
{
"deviceId": "DC:23:4F:C1:33:E9",
"serviceId": "00001910-0000-1000-8000-00805F9B34FB",
"characteristicId": "00002B10-0000-1000-8000-00805F9B34FB",
"value": {}
}
代码如下:
onBLECharacteristicValueChange() {
console.log('onBLECharacteristicValueChange');
// #ifdef MP-ALIPAY
uni.onBLECharacteristicValueChange(characteristic => {
console.log(characteristic, 'characteristic进入1onBLECharacteristicValueChange方法')
let array = new Uint8Array(characteristic.value);
//console.log("array:" + array)
//console.log("repeat:" + repeat)
if (repeat.toString() === array.toString()) {
return
} else {
repeat = array
}
let str = ''
for (let i = 0; i < array.byteLength; i++) {
if (array[0] === 0) {
receiveData = ""
dataLength = array[1]
}
if (i !== 0) {
let n = array[i].toString(16)
let s = '0000' + n
str += s.substring(s.length - 2)
}
}
receiveData += str
console.log('测试断点!!!!!', '(receiveData.length - 4) / 2', (receiveData.length - 4) / 2, 'dataLength', dataLength)
if ((receiveData.length - 4) / 2 === dataLength) {
console.log('进入判断!!!!')
uni.$emit('getBLEData', receiveData)
let FlAG = receiveData.substring(4, 6)
console.log("FlAG:" + FlAG)
switch (FlAG) {
case '01':
analysisKey1();
break;
case '04':
analysisKey4();
break;
case '05':
analysisSessionKey();
break;
default:
console.log("新的" + FlAG)
}
}
});
// #endif
// #ifdef APP-PLUS
uni.onBLECharacteristicValueChange(characteristic => {
console.log("characteristic基座调试:", characteristic);
var array = new Uint8Array(characteristic.value);
//console.log("array:" + array)
//console.log("repeat:" + repeat)
if (repeat.toString() === array.toString()) {
return
} else {
repeat = array
}
let str = ''
for (let i = 0; i < array.byteLength; i++) {
if (array[0] === 0) {
receiveData = ""
dataLength = array[1]
}
if (i !== 0) {
let n = array[i].toString(16)
let s = '0000' + n
str += s.substring(s.length - 2)
}
}
receiveData += str
//console.log("receiveData:" + receiveData)
// console.log("receiveData.length:" + receiveData.length)
// console.log("dataLength:" + dataLength)
if ((receiveData.length - 4) / 2 === dataLength) {
uni.$emit('getBLEData', receiveData)
let FlAG = receiveData.substring(4, 6)
console.log("FlAG:" + FlAG)
switch (FlAG) {
case '01':
analysisKey1();
break;
case '04':
analysisKey4();
break;
case '05':
analysisSessionKey();
break;
default:
console.log("新的" + FlAG)
}
}
});
// #endif
}
0 个回复