//#ifdef MP-WEIXIN NFCReadCard: function() { let _this = this let adapter = wx.getNFCAdapter() console.log(adapter) adapter.startDiscovery({ success: (e) => { console.log('开始贴卡了', e) adapter.onDiscovered(function(res) { console.log('读到卡片了', res); //console.log(res.techs); //首先将字符串转为16进制 这里发送APDU指令 // let str = 'GET CHALLENGE' // let val = "" // for (let i = 0; i < str.length; i++) { // if (val === '') { // val = str.charCodeAt(i).toString(16) // } else { // val += ',' + str.charCodeAt(i).toString(16) // } // } // //将16进制转化为ArrayBuffer // let arrbuf = new Uint8Array(val.match(/[\da-f]{2}/gi).map(function (h) { // return parseInt(h, 16) // })).buffer; let arrbuf = _this.strToArrayBuffer('GET DATA') //字符串转ArrayBuffer 发送IC卡adpu指令 详情百度IC卡adpu //let arrbuf = res.id if (res.techs.includes(adapter.tech.nfcA)) { console.log('发现' + adapter.tech.nfcA + '卡'); let nfcA = adapter.getNfcA(); //app.nfcA = nfcA; nfcA.connect({ success: function(resA) { console.log('设备已连接A', resA) nfcA.transceive({ data: arrbuf, success: function(resAA) { console.log('发送数据成功A, 接收数据如下:', resAA); console.log(_this.arrayBuffertoStr(resAA.data)) debugger }, fail: function(errAA) { console.log('发送数据失败A', errAA); } }) }, fail: function(errA) { console.log('设备联接错误A', errA); } }); } }) } }) }, //#endif
NFCAdapter.onDiscovered无法获取NFC数据,被系统拦截,应如何设置?我的小程序目标是通过NFC功能,读写NFC卡,在注册回调函数后,无法被回调,现象是贴卡后,系统会弹出选择使用NFC的应用的对话框,若选择微信,则会跳转到微信公交卡页面,提示“卡片类型不符”,图片如下:[图片] 我的“读NFC卡”方法代码如下: NFCReadCard: function(){ let _this = this let adapter = wx.getNFCAdapter() console.log(adapter) adapter.onDiscovered(function (res){ console.log('读到卡片了', res); //console.log(res.techs); if(res.techs.includes(adapter.tech.nfcA)){ console.log('发现'+adapter.tech.nfcA+'卡'); let nfcA = adapter.getNfcA(); app.nfcA = nfcA; nfcA.connect({ success: function(res){ console.log('设备已连接', res) nfcA.transceive({ data:new ArrayBuffer(0), success: function(res){ console.log('发送数据成功, 接收数据如下:', res); }, fail: function(err){ console.log('发送数据失败', err); } }) }, fail: function(err){ console.log('设备联接错误', err); } }); } }) }
2021-01-30