收藏
回答

使用uniapp开发微信小程序的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
	}


上面的nfc功能是在一个点击事件触发的,但点击之后一点反应没有,一个log都没有打印出来

最后一次编辑于  2023-06-12
回答关注问题邀请回答
收藏

1 个回答

  • 清蒸鱼
    清蒸鱼
    2023-06-13

    没有错误信息?

    2023-06-13
    有用
    回复 2
    • 薛孟飞
      薛孟飞
      2023-06-13
      就弹了一个框是否将默认支付设置为微信
      2023-06-13
      回复
    • [社会社会]
      [社会社会]
      03-06回复薛孟飞
      你现在这个问题解决了吗?我也遇到了
      03-06
      回复
登录 后发表内容