- 为什么NFCAdapter.stopDiscovery不生效?
我有两个页面需要调用NFC功能,调用顺序均为: wx.getNFCAdapter()adapter.startDiscovery()adapter.onDiscovered()nfcISO.connect()nfcISO.isConnected()nfcISO.transceive()nfcISO.close()adapter.stopDiscovery()异常现象为: A页面显示时,调用步骤1-6,A页面关闭前,调用步骤7-8,均调用成功。 然后打开B页面,调用步骤1-6,此时处理程序仍然进入页面A的监听函数中。 请问我应该如何关闭A页面的NFC监听?为什么调用adapter.stopDiscovery()无效?
2021-07-19 - 为什么NfcA.transceive发送数据返回13017?
如题,大致流程是先调用wx.getNFCAdapter,然后调用adapter.startDiscovery,然后调用adapter.onDiscovered,然后调用nfcA.connect,然后调用nfcA.transceive,此时返回13017错误。 基础库版本:2.14.1 Android版本:10 手机型号:一加5t NFC相关代码如下: 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); 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.getAtqa({ // success: function(res){ // console.log('Atqa', res) // } // }); // nfcA.getSak({ // success: function(res){ // console.log('Sak', res) // } // }); nfcA.isConnected({ success: function(res){ console.log('Connected') } }); // let byteArr = [0x00, 0xa4, 0x00, 0x00, 0x02, 0xdf, 0x01] // let byteArrBuffer = new Uint8Array(byteArr).buffer let dataBytes = [0x00, 0x84, 0x00, 0x00, 0x02] let dataBuffer = new Uint8Array(dataBytes).buffer nfcA.transceive({ // data:new ArrayBuffer(0), data: dataBuffer, success: function(res){ console.log('发送数据成功, 接收数据如下:', res); }, fail: function(err){ console.log('发送数据失败', err); } }) }, fail: function(err){ console.log('设备联接错误', err); } }); } }) }}) }
2020-12-24 - 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); } }); } }) }
2020-12-22