小程序NFC应用

微信小程序的NFC读写功能基于微信提供的API实现,允许开发者在小程序中访问设备的NFC模块,进行标签读取和写入操作。该功能适用于门禁卡、支付、物流追踪等场景。微信官方提供了wx.getNFCAdapter接口获取NFC适配器实例,后续操作均基于此适配器。

使用前需注意:

  • 手机硬件需支持NFC功能。
  • 微信版本要求7.0.0及以上。
  • 需在小程序后台配置NFC权限。

实现步骤

1. 初始化NFC适配器

通过wx.getNFCAdapter获取NFC适配器实例,并检查设备支持情况:

javascript 复制代码
const nfcAdapter = wx.getNFCAdapter();
if (!nfcAdapter) {
  wx.showToast({ title: '设备不支持NFC', icon: 'none' });
  return;
}

2. 监听NFC标签发现

使用onDiscovered监听NFC标签靠近事件,获取标签ID(UID)或其他数据:

javascript 复制代码
nfcAdapter.onDiscovered(res => {
  const uid = res.id; // 标签UID(16进制字符串)
  wx.showModal({ title: '检测到NFC标签', content: `UID: ${uid}` });
});

3. 读取NFC标签数据

调用getNdefMessage读取标签中的NDEF格式数据(如文本、链接):

javascript 复制代码
nfcAdapter.getNdefMessage({
  success(res) {
    const messages = res.messages; // NDEF消息数组
    messages.forEach(msg => {
      if (msg.recordType === 'text') {
        console.log('文本内容:', msg.payload);
      }
    });
  },
  fail(err) {
    console.error('读取失败:', err);
  }
});

4. 写入NFC标签数据

通过writeNdefMessage写入NDEF格式数据(需标签可写):

javascript 复制代码
nfcAdapter.writeNdefMessage({
  messages: [{ recordType: 'text', payload: 'Hello NFC' }],
  success() {
    wx.showToast({ title: '写入成功' });
  },
  fail(err) {
    console.error('写入失败:', err);
  }
});

应用案例:门禁卡模拟

以下是一个模拟门禁卡功能的完整代码示例,实现读取标签UID并验证权限:

javascript 复制代码
Page({
  data: {
    uid: '',
    access: false,
  },

  onLoad() {
    this.initNFC();
  },

  initNFC() {
    const nfcAdapter = wx.getNFCAdapter();
    if (!nfcAdapter) {
      wx.showToast({ title: '设备不支持NFC', icon: 'none' });
      return;
    }

    nfcAdapter.onDiscovered(res => {
      this.setData({ uid: res.id });
      this.checkAccess(res.id);
    });
  },

  checkAccess(uid) {
    // 模拟验证逻辑:假设合法UID为 '0A1B2C3D'
    const validUIDs = ['0A1B2C3D', '4E5F6A7B'];
    const access = validUIDs.includes(uid);
    this.setData({ access });
    
    if (access) {
      wx.showModal({ title: '验证通过', content: '欢迎进入' });
    } else {
      wx.showModal({ title: '验证失败', content: '无效门禁卡' });
    }
  },
});

注意事项

  • 用户授权:首次调用NFC功能时会弹窗请求权限,需用户手动允许。
  • 兼容性:不同手机厂商的NFC协议实现可能差异,建议测试多款设备。
  • 调试工具:开发者工具无法模拟NFC功能,需真机调试。

通过上述代码和案例,可快速实现基于微信小程序的NFC读写功能,扩展至实际应用场景中。

相关推荐
小码哥0685 小时前
Java医院陪诊系统陪护系统陪诊小程序,三端齐全可定制
大数据·小程序·陪诊陪护·陪诊小程序·陪护系统·陪诊系统·陪护小程序
连涨- AI脑波英语6 小时前
机构小程序对接词汇课程,测试账号怎样与正式学生账号隔离?
小程序·接口安全·脑机单词速记
扶风ff11 小时前
练题簿在线免费刷题:题目导入、章节管理、Excel 与 Word 导出,让题库更好用
学习·小程序·word·excel
程序猿_极客13 小时前
【免费】分享一套优质的基于微信小程序的音乐播放器系统的设计与实现,源码+文档+视频详解(讲解)
微信小程序·小程序·springboot·音乐播放器小程序·音乐管理系统
愚公搬代码13 小时前
【愚公系列】《微信小程序项目实战(AI编程+视频图解)》015-测试
微信小程序·小程序·ai编程
今日热点2 天前
小程序主体变更公证线上办理教程|2026 最新材料规范与审核避坑
小程序
Ai-_Man2 天前
从聊天框到正式文档:AI导出鸭瞄准AI大模型应用的“最后一公里”
开发语言·前端·javascript·人工智能·小程序
省钱兄--zs2 天前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
Ai-_Man2 天前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
光影少年2 天前
Taro 是如何解析入口配置 app.config.ts 和页面配置的?
微信小程序·小程序·typescript·reactjs·百度小程序·taro