兄弟解决了吗?
nfc使用wx.onHCEMessage(CALLBACK)问题wx.startHCE({ aid_list: ['F222222222'], success: function (res) { that.setData({ text: res.errMsg }) wx.onHCEMessage(function (res) { that.setData({ text: 'res.data' }) if (res.messageType === 1) { that.setData({ text: 'res.data' }) wx.sendHCEMessage({ data: buffer }) } }) } }) 用读卡设备对手机发送adpu指令后,text并没有显示'res.data',应该怎么使用wx.onHCEMessage()
07-04请问有解决的吗? 红米手机, 也是一样的代码也是走到这一步不走了 。然后就是系统的nfc弹出来了。小程序走不下去。
关于小程序nfc卡模拟中的wx.onHCEMessage(callback)附上官方文档https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getHCEState.html 根据官方文档的做法 我的code如下 [代码]console.log([代码][代码]'aa'[代码][代码])[代码][代码] [代码][代码]wx.getHCEState({[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'getHCEState'[代码] [代码]+ res.errCode,[代码][代码] [代码][代码]duration: 2000[代码][代码] [代码][代码]})[代码] [代码] [代码][代码]const buffer = [代码][代码]new[代码] [代码]ArrayBuffer(1)[代码][代码] [代码][代码]const dataView = [代码][代码]new[代码] [代码]DataView(buffer)[代码][代码] [代码][代码]dataView.setUint8(0, 0)[代码][代码] [代码][代码]console.log(buffer)[代码][代码] [代码][代码]wx.startHCE({[代码][代码] [代码][代码]aid_list: [[代码][代码]'F223344556'[代码][代码]],[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res) {[代码] [代码] [代码][代码]console.log([代码][代码]'startHCE'[代码][代码])[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'startHCE'[代码][代码],[代码][代码] [代码][代码]duration: 2000[代码][代码] [代码][代码]})[代码][代码] [代码][代码]wx.onHCEMessage([代码][代码]function[代码][代码](res) {[代码][代码] [代码][代码]console.log([代码][代码]'onHCEMessage'[代码][代码],res)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: [代码][代码]'onHCEMessage'[代码][代码],[代码][代码] [代码][代码]duration: 2000[代码][代码] [代码][代码]})[代码][代码] [代码][代码]if[代码] [代码](res.messageType === 1) {[代码] [代码] [代码][代码]console.log([代码][代码]'res.messageType === 1'[代码][代码]);[代码] [代码] [代码][代码]wx.sendHCEMessage({[代码][代码] [代码][代码]data: buffer,[代码][代码] [代码][代码]success:(res)=>{[代码][代码] [代码][代码]console.log([代码][代码]'sendHCEMessage'[代码][代码]+res)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail:(res)=>{[代码][代码] [代码][代码]console.log([代码][代码]'sendHCEMessage失败'[代码] [代码]+ res)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail(res) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail(res) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: res,[代码][代码] [代码][代码]duration: 2000[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码]以上代码执行结果如下 我把手机放到读卡器上了 没反应[图片] [代码]wx.onHCEMessage([代码][代码]function[代码][代码](res) { 这个函数一直不执行 没任何结果也不返回任何值 [代码] 请问这个是怎么模拟卡的
07-04大佬们解决了吗我也是遇到了这个问题
nfc 功能,NfcA.transceive为什么总是失败?api:NfcA.transceive基础库:2.14.2 微信版本:7.0.21 华为手机 能读到卡片的类型,也能连接上卡片,nfcA.connect可以成功,但是transcevie就失败了 错误信息:transceive:fail:system internal error 错误code:13017 const app = getApp() Page({ data: { }, onLoad: function () { const adapter = wx.getNFCAdapter(); console.log(adapter); this.adapter = adapter; adapter.onDiscovered(function (res){ console.log('读到卡片了', res); //console.log(res.techs); if(res.techs.includes(adapter.tech.nfcA)){ console.log('发现'+adapter.tech.nfcA+'卡'); const 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); } }); } }) adapter.startDiscovery({ success: function(res){ console.log('成功发现设备',res); }, fail: function(err){ console.log('发现设备出错', err); }, complete: function(){ } }); }, onHide() { if (this.nfc) { this.nfc.stopDiscovery() } } })
2021-03-10同问 有这功能了吗,查了半天没查到
为小程序添加NFC读取卡片数据功能- 需求的场景描述(希望解决的问题) 目前小程序只支持NFC HCE来模拟卡片,并不支持NFC来读取卡片数据,在一些小程序当中,往往需要使用NFC功能来读取卡片数据。以我们的校园小程序为例,我们需要借助NFC功能读取卡片中的二进制数据,然后得到卡片的ID,向我们的服务器发送请求以查询卡内的余额以及相关的个人信息,这样的话用户就不需要专门跑到我们在校园内设置的终端机器上查询,以及一些卡片充值等功能我们都需要事先得到卡片的一些数据才能够完成。 - 希望提供的能力 希望小程序能够尽快的提供NFC读取卡片数据的功能
2021-03-10