收藏
回答

小程序靠近NFC读取不到设备的id信息,是不是我用的方法不对?

代码片段:nfcAdapter.onDiscovered(async res => {


        setNfcStatus({ nfcStatus: 'NFC读取成功', nfcContent: JSON.stringify(res) });

        try {

          // 2. 检查并获取NDEF对象

          if (res.techs && res.techs.includes('NDEF')) {

            const ndef = nfcAdapter.getNdef();


            // 3. 连接并读取NDEF消息

            let connectRes = await new Promise((resolve, reject) => {

              ndef.connect({

                success: resolve,

                fail: reject

              });

            });

            console.log('999')

            ndef.onNdefMessage((res:Object) => {

                console.log('NDEF消息111111111:', res);

              Taro.showToast({


                title: `接收到 Ndef 消息`,


                icon: 'none',


              })

              });

            console.log('连接结果',connectRes)

            const ndefMessage = await new Promise((resolve, reject) => {

              ndef.onNdefMessage((res:Object) => {

                console.log('NDEF消息:', res);

                resolve(res);

                reject(new Error('未找到NDEF消息'));

              });

            });

            console.log('NDEF消息读取:', ndefMessage);



            // 4. 处理读取到的NDEF数据

            if (ndefMessage) {

              // 这里可以解析ndefMessage中的文本、URI等记录

              const content = `NDEF内容: ${JSON.stringify(ndefMessage)}`;

              setNfcStatus({ nfcStatus: '已读取NDEF数据', nfcContent: content });

            } else {

              setNfcStatus({ nfcStatus: '标签为空或读取失败', nfcContent: '未发现NDEF记录' });

            }


            // 5. 断开连接

            ndef.close();

          } else {

            setNfcStatus({ nfcStatus: '标签不支持NDEF', nfcContent: '无法读取标准信息' });

          }

        } catch (err) {

          console.error('操作失败:', err);

          setNfcStatus({ nfcStatus: '读取操作失败', nfcContent: err.errMsg || '未知错误' });

        }

回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    2025-09-19
    有用
    回复
登录 后发表内容