代码片段: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 || '未知错误' });
}
