writeNFC() {
let app = this;
// 获取NFC适配器实例
const nfc = wx.getNFCAdapter();
// 检查NFC是否可用
nfc.startDiscovery({
success: (res) => {
console.log('NFC发现成功', res);
// 监听NFC标签发现
nfc.onDiscovered((res) => {
console.log('NFC标签发现', res); // 打印完整的发现结果
if (res.messages && res.messages.length > 0) {
const nfcData = res.messages[0];
console.log('NFC数据', nfcData); // 打印具体的NFC数据
app.$modal.alert('NFC数据tnf1', JSON.stringify(nfcData));
// 准备要写入的NDEF数据
const ndefMessage = [{
tnf: 2, // URI类型
type: '',
id: '',
payload: 'https://www.example.com'
}];
let Ndef = nfc.getNdef();
Ndef.connect({success:(res)=>{
wx.showToast({
title: 'nde连接成功',
icon: 'success'
})
// 写入NDEF数据
const apduCommand = new Uint8Array();
Ndef.writeNdefMessage({
texts: ['Hello World', '小程序NFC测试'],
success: (res) => {
console.log('写入成功', res);
wx.showToast({
title: '写入成功',
icon: 'success'
});
},
fail: (err) => {
console.error('写入失败', err);
app.$modal.alert('写入失败', JSON.stringify(err));
wx.showToast({
title: '写入失败',
icon: 'none'
});
}
});
Ndef.onNdefMessage((res) => {
console.log('NFC标签发现', res); // 打印完整的发现结果
app.$modal.alert('NFC数据res', JSON.stringify(res));
if (res.messages && res.messages.length > 0) {
const nfcData = res.messages[0];
console.log('NFC数据', nfcData); // 打印具体的NFC数据
if (nfcData.records && nfcData.records.length > 0) {
nfcData.records.forEach(record => {
if (record.tnf === 2) {
// 处理URI类型
try {
const uri = record.type + record.payload;
console.log('解析的URI:', uri);
app.$modal.alert('解析的URI', uri);
} catch (e) {
console.error('解析URI失败', e);
}
} else if (record.tnf === 1) {
// 处理其他类型的NDEF记录
console.log('NDEF记录', record);
app.$modal.alert('NFC数据tnf1', JSON.stringify(record));
}
});
} else {
console.error('NFC记录为空');
}
} else {
console.error('没有发现NFC标签');
}
});
}})
} else {
console.error('没有发现NFC标签');
}
});
},
fail: (err) => {
console.error('NFC发现失败', err);
wx.showToast({
title: 'NFC不可用',
icon: 'none'
});
}
});
},