2024年了,还没问到答案。。。
微信小程序NFC onHCEMessage无法触发最近一直在研究微信小程序NFC的功能。 模拟门禁卡。 尝试了各种方式, onHCEMessage一直无法回调。 在调用startHCE时,需要填写aid_list。 这里我是按照官方文档填写的F222222222 是否和这个ids_list有关, 不知道这个数据从何而来,跪求大神指教
04-11onHCEMessage没有触发是怎么回事?
微信小程序使用下面这个方法模拟出的nfc卡都支持什么协议?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 }
04-07