更新记录

1.0.0(2026-06-22)

  • 新增 NFC 标签读写 UTS 插件,提供统一会话、标签发现、NDEF、技术指令、能力矩阵和错误码契约。
  • Android 接入系统 NFC 原生能力,覆盖 ReaderMode、NDEF 读写、格式化写入、NfcA/B/F/V、IsoDep、MifareClassic、MifareUltralight。
  • iOS 接入 Core NFC 基础能力,覆盖标签会话、NDEF 读写、活动标签缓存、ISO7816 APDU,并对系统限制能力返回明确失败。
  • HarmonyOS 增加 ohos.permission.NFC_TAG 权限声明、统一 API 入口和结构化待适配错误,不伪造成功结果。
  • 新增 uni-app、uni-app x 示例和当前项目 NFC 调试页,便于打自定义基座后做真机验证。
  • 新增发布守卫脚本,校验命名、接口、平台配置、示例入口、禁用词和关键原生实现文件。

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × ×

lizhao-nfc-pro

lizhao-nfc-pro 是面向 uni-app / uni-app x 的 NFC 标签读写 UTS 插件,用于业务 App 读取、写入和诊断用户主动靠近设备的 NFC 标签。

功能特色

  • Android 已接入系统 NFC ReaderMode、NDEF 读写、格式化写入、IsoDep、NfcA/B/F/V、Mifare Classic 和 Mifare Ultralight。
  • iOS 已接入 Core NFC 会话、标签发现、NDEF 读写、ISO7816 APDU 和能力边界诊断。
  • HarmonyOS 已提供权限声明、统一 API 入口和结构化能力边界,真实标签读写需在 Harmony 自定义基座和目标 SDK 环境下继续联调。
  • 提供统一会话控制、标签发现监听、活动标签缓存和能力矩阵。
  • 支持 NDEF 文本、URI、MIME、自定义 external、raw payload 的统一建模。
  • 预留 Mifare Classic、Mifare Ultralight、IsoDep、NfcA/B/F/V 等技术类型接口。
  • 所有不支持或不可用能力均返回结构化错误,不伪造成功。
  • 文档和示例面向客户接入,先给最小调用,再给增强场景。

接入方式选择

场景 推荐 API 说明
判断设备是否可用 getNfcStatus / getNfcCapabilities 先检查平台、开关、权限和能力矩阵
读取 NDEF startNfcSession + onTagDiscovered + readNdef iOS 需要主动开启会话;Android 启用前台 ReaderMode
写入 NDEF writeNdef iOS 需在活跃会话内写入;Android 需先发现活动标签
发送 APDU isoDepTransceive 适用于支持 IsoDep 的标签
Mifare 块读写 mifareClassicReadBlock / mifareClassicWriteBlock 需先鉴权,平台能力以矩阵为准
原始技术指令 nfcATransceive 适用于熟悉标签协议的业务

支持平台

平台 是否支持 说明
Android 已接入系统 NFC 原生能力,需要包含 NFC 权限的自定义基座
iOS 已接入 Core NFC 会话和 NDEF/ISO7816 基础能力,能力受 iOS 系统限制
HarmonyOS 部分 已声明 ohos.permission.NFC_TAG 并提供统一入口;基础版对真实读写返回结构化待适配错误
Web Web 不提供 App 原生 NFC 标签能力
微信小程序 当前插件不提供小程序 NFC 适配
支付宝小程序 当前插件不提供小程序 NFC 适配

最小示例

import { getNfcStatus, startNfcSession, onTagDiscovered, readNdef } from '@/uni_modules/lizhao-nfc-pro'

// 先检查当前平台 NFC 状态,避免直接进入读写流程。
getNfcStatus({
  success(res) {
    console.log('NFC 状态', res)
  },
  fail(err) {
    console.log('NFC 状态检查失败', err)
  }
})

// iOS / HarmonyOS 需要主动开始会话;Android 可用于启用前台 reader mode。
startNfcSession({
  alertMessage: '请将 NFC 标签靠近设备感应区',
  keepSessionAlive: true,
  success(res) {
    console.log('NFC 会话已开始', res)
  }
})

// 标签事件是持续回调,页面卸载时应调用 offTagDiscovered。
onTagDiscovered((tag) => {
  console.log('发现 NFC 标签', tag.uidHex, tag.techs)

  // 读取当前活动标签的 NDEF 数据。
  readNdef({
    success(res) {
      console.log('NDEF 内容', res.records)
    }
  })
})

写入 NDEF 示例

import { buildTextRecord, buildUriRecord, writeNdef } from '@/uni_modules/lizhao-nfc-pro'

// 构造文本和 URI 记录,统一交给 writeNdef 写入当前活动标签。
const textRecord = buildTextRecord({ text: '欢迎使用 lizhao-nfc-pro', lang: 'zh-CN' })
const uriRecord = buildUriRecord({ uri: 'https://example.com' })

writeNdef({
  records: [textRecord, uriRecord],
  success(res) {
    console.log('NDEF 写入成功', res)
  },
  fail(err) {
    console.log('NDEF 写入失败', err)
  }
})

参数说明

startNfcSession(options)

说明
开始 NFC 会话或启用前台读卡模式。

支持平台
Android / iOS / HarmonyOS(HarmonyOS 基础版返回结构化待适配错误)

参数 类型 必填 说明 默认值 可选参数
options NfcSessionOptions 会话参数 alertMessage / keepSessionAlive / success / fail / complete
options.alertMessage string iOS / HarmonyOS 会话提示文案
options.keepSessionAlive boolean 读到标签后是否保持会话,便于继续写入 false true / false
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

writeNdef(options)

说明
向当前活动标签写入 NDEF 消息。

支持平台
Android / iOS / HarmonyOS(HarmonyOS 基础版返回结构化待适配错误)

参数 类型 必填 说明 默认值 可选参数
options NfcWriteOptions 写入参数 records / success / fail / complete
options.records Array 需要写入的 NDEF 记录
options.success function 写入成功回调
options.fail function 写入失败回调
options.complete function 完成回调

错误码

错误码 含义 说明
9060001 platform unsupported 当前平台不支持 NFC 原生标签能力
9060002 native context unavailable 原生上下文不可用
9060003 permission denied 权限未授予或能力未配置
9060004 nfc disabled NFC 开关未开启
9060005 session inactive NFC 会话未开启
9060006 tag unavailable 当前没有可操作标签
9060007 tag expired 活动标签已过期
9060008 tech unsupported 当前标签或平台不支持该技术类型
9060009 authentication failed Mifare 鉴权失败
9060010 tag lost 标签连接丢失
9060011 write failed 写入失败
9060012 format failed 格式化失败
9060013 invalid payload 入参或载荷不合法
9060014 transceive failed 原始指令发送失败
9060015 reader busy 读写器正忙
9060016 session timeout 会话超时
9060017 native implementation pending 当前平台原生适配未完成

完整示例源码

示例 路径 说明
uni-app 页面示例 uni_modules/lizhao-nfc-pro/example/uniapp/nfc.vue 适合复制到普通 Vue 页面验证
uni-app x 页面示例 uni_modules/lizhao-nfc-pro/example/uniappx/index.uvue 适合复制到 UVUE 页面验证
当前项目调试页 pages/nfc/nfc.vue 已挂到首页入口,便于打基座后测试

自定义基座说明

本插件已经修改 Android Manifest、iOS NFC Capability / Entitlements、HarmonyOS NFC 权限声明和 App 端平台 UTS/Swift 原生能力。真机使用最新能力前,需要重新运行对应平台原生联编或重新打对应平台自定义基座;仅更新 wgt/appResource 不能替换旧基座中已编译的 App 原生部分。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android: NFC 权限;iOS: NFCReaderUsageDescription 与 NFC Capability;HarmonyOS: ohos.permission.NFC_TAG

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

读取或写入用户主动靠近设备的 NFC 标签数据;不会后台静默读取标签

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。