wx.getHCEState({
success(res) {
console.log('getHCEState',res.errCode);
if (res.errCode == 0) {
console.log("HCE 能力正常");
// 初始化NFC
wx.startHCE({
aid_list: ['F222222222'],
success(res) {
console.log('startHCE',res.errCode);
if (res.errCode == 0) {
// 监听事件
wx.onHCEMessage(function(res) {
console.log('onHCEMessage',res);
if (res.messageType === 1) {
console.log('res.messageType === 1');
// 发送NFC消息
var str = JSON.stringify({
username: '张三',
phone: '15512365478'
})
var byteArrays = util.stringToByteArray(str)
var retbuffer = new ArrayBuffer(byteArrays.length)
var dataView = new DataView(retbuffer)
for(let i = 0;i < dataView.byteLength;i++) {
dataView.setInt8(i, byteArrays[i])
}
wx.sendHCEMessage({
data: retbuffer,
success: function(res) {
console.log('NfcHCECore-->sendHCEMessage:success',res);
},
fail: function(err) {
console.error('NfcHCECore-->sendHCEMessage:fail',err)
}
})
}
})
}
}
})
}
}
})
function stringToByteArray(str) {
var bytes = new Array()
var len, c;
len = str.length
for(var i = 0;i < len;i++) {
c = str.charCodeAt(i)
if (c >= 0x010000 && c <= 0x10FFFF) {
bytes.push(((c >> 18) & 0x07) | 0xF0)
bytes.push(((c >> 12) & 0x3F) | 0x80)
bytes.push(((c >> 6) & 0x3F) | 0x80)
bytes.push((c & 0x3F) | 0x80)
} else if (c >= 0x000800 && c <= 0x00FFFF) {
bytes.push(((c >> 12) & 0x0F) | 0xE0)
bytes.push(((c >> 6) & 0x3F) | 0x80)
bytes.push((c & 0x3F) | 0x80)
} else if (c >= 0x000080 && c <= 0x0007FF) {
bytes.push(((c >> 6) & 0x1F) | 0xC0)
bytes.push((c & 0x3F) | 0x80)
} else {
bytes.push(c & 0xFF)
}
}
return bytes
}
上面的nfc功能是在一个点击事件触发的,但点击之后一点反应没有,一个log都没有打印出来
没有错误信息?