更新记录
1.0.0(2026-01-26)
- 新版发布
平台兼容性
uni-app(4.81)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | √ | 13 | 1.0.0 | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | - | × | × |
uni-app x(4.81)
| Chrome | Safari | Android | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|
| × | × | √ | 13 | 1.0.0 | × | × |
yt-nfc
开发文档
特别提醒
- 购买本插件前,请先试用,请先试用,请先试用,确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款。
- 如有使用上的疑问、bug,可以进交流群联系作者;
- 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;
- 可扫描右侧二维码安装Android示例demo,体验插件功能
- iOS使用示例demo测试时,要先修改manifest中项目名称后再打包(名称长度尽量短一点),不然会因为名称过长,导致App启动不了。
- iOS端需要再开发者中心iOS 开发者Certificates, Identifiers & Profiles/Identifiers/勾选NFC Tag Reading后重新生成描述文件打包测试,不明白可以进交流群询问作者。
插件主要功能
- NFC检测
- NDEF数据读取
- NDEF数据写入
- 扇区数据写入
- 扇区数据读取
- 支持iOS、Android,后续会适配纯血HarmonyOS
更多好用实惠插件
- 高德定位连续定位后台定位保活定位
- 百度汽车摩托车导航插件
- 百度鹰眼轨迹插件支持后台采集、保活
- 百度定位插件、连续定位、保活、坐标系转换、支持双端
- 计步器插件,支持Android、iOS双端
- uts经典蓝牙插件、蓝牙电子秤
- 获取唯一标识、ServiceID、卸载更新不变iOS+Android
- Android经典蓝牙
- 华为ScanKit统一扫码插件支持iOS+Android原生插件
- 【华为扫码】统一扫码插件支持多码连续扫码支持半屏扫码uts插件iOS+Android+HarmonyOS
- 截屏、录屏、防截屏、录屏iOS、Android
- 人脸采集插件 最新百度SDK 离线人脸采集、活体检测
- 页面截长图、截取WebView内容,生成长截图Android+iOS
- 百度OCR识别插件
- Android无预览拍照、录制、静默拍照、静默录制、抓拍插件支持
- uni高德地图功能拓展地图截图
- 科大讯飞离线合成插件支持iOS、android
- iOS保活Android保活鸿蒙保活定位插件系统定位
- 高德定位、猎鹰轨迹插件
- 海康威视综合安防平台视频播放插件
插件接入
1.点击插件首页”试用“,选择项目导入插件,导入后可在项目根目录下uni_modules文件中查看是否有yt-nfc文件夹,有则导入成功。
引入插件--注意需引用插件后再打自定义基座调试
在需要使用的页面引入插件
import *as NFCManager from '../../uni_modules/yt-nfc'
注册监听回调
注册监听回调,建议在onLoad()中监听:NFCManager.registrationCallback(res=>{})
//完整代码
onLoad() {
NFCManager.registrationCallback(res => {
let functionName = `${res["functionName"]}`;
let msg = `${res["msg"]}`;
switch (functionName) {
case "onNDEFReadSuccess"://读取ndef数据成功回调
{
let ndefRecords = res["ndefRecords"] as Array<Map<string, any>>;
if (ndefRecords.length > 0) {
let ndefRecord = ndefRecords[0];
let typeNameFormat = ndefRecord["typeNameFormat"] as string
let type = ndefRecord["type"] as string
let typeHex = ndefRecord["typeHex"] as string
let identifier = ndefRecord["identifier"]
let payloadHex = ndefRecord["payloadHex"]
let content = ndefRecord["content"]
let payloadType = ndefRecord["payloadType"]
console.log(`读取ndef数据成功--typeNameFormat:${typeNameFormat} type:${type} typeHex:${typeHex} identifier:${identifier} payloadHex:${payloadHex} content:${content} payloadType:${payloadType}`)
}
}
break;
case "onNDEFWriteSuccess"://ndef数据写入成功回调
{
console.log(msg);
}
break;
case "onMifareReadSuccess"://扇区数据读取成功
{
let sector = res["sector"];
let block = res["block"];
let data = res["data"];
console.log(`扇区数据读取成功--扇区:${sector} 块:${block} 数据:${data}`);
}
break;
case "onMifareWriteSuccess"://扇区数据写入成功
{
let sector = res["sector"];
let block = res["block"];
console.log(`扇区数据写入成功--扇区:${sector} 块:${block}`);
}
break;
case "onTagDetected"://标签检测回调
{
let idString = res["idString"] as string;
let tagType = res["tagType"] as string;
console.log(`检测到标签--唯一标识:${idString} 标签类型:${tagType}`)
}
break;
case "onError"://错误回调
{
console.log(msg);
}
break;
default:
break;
}
})
},
单独检测
单独检测/扫描返回NFC类型和系列号(唯一标识)
NFCManager.startNFCDiscoverySession();
NDEF读取
读取标签NDEF数据读取成功会触发NFCManager.registrationCallback/case "onNDEFReadSuccess"://读取ndef数据成功回调
NFCManager.startTagScanning()
NDEF数据写入
写入成功会触发NFCManager.registrationCallback/case "onNDEFWriteSuccess"://ndef数据写入成功回调
//uniapp 去掉as NFCManager.WriteNDEFOption类型转换,uniapp-x项目保留
NFCManager.writeNDEF({
contentType: "URL",
content: "https://ext.dcloud.net.cn/",
tagFormat: "NFC_WELL_KNOWN",
identifier: ""
} as NFCManager.WriteNDEFOption)
NDEF写入参数说明:
| 参数 | 参数类型 | 说明 |
|---|---|---|
| contentType | string | 内容类型,支持以下类型:TEXT: 普通文本内容、URL: 网页地址、SMS: 短信内容,格式:"电话号码,短信内容" 或 "电话号码"、EMAIL: 邮件内容,格式:"邮箱地址" 或 "邮箱地址,主题" 或 "邮箱地址,主题,正文"、TELEPHONE: 电话号码、CUSTOM_SCHEME: 自定义 URL Scheme |
| content | string | 要写入的内容,根据 contentType 有不同的格式要求 |
| tagFormat | string | 标签格式,默认为 NFC_WELL_KNOWN,支持以下格式:NFC_WELL_KNOWN: 使用标准的 NDEF Well Known 格式、MEDIA: 使用 MIME 媒体类型格式、ABSOLUTE_URI: 使用绝对 URI 格式、NFC_EXTERNAL: 使用 NFC 外部类型格式 |
| identifier | string | 唯一标识符,用于标识该 NDEF 记录(可选) |
扇区数据读取
读取扇区数据,成功会触发NFCManager.registrationCallback/case "onMifareReadSuccess"://扇区数据读取成功
//uniapp 去掉as NFCManager.MifareOption类型转换,uniapp-x项目保留
NFCManager.readMifareClassic({
sector: 0,
block: 0,
key: "FF:FF:FF:FF:FF:FF",
keyType: "A"
} as NFCManager.MifareOption)
扇区数据读取参数说明:
| 参数 | 参数类型 | 说明 |
|---|---|---|
| sector | number | 扇区号 取值范围0~15 |
| block | number | 块索引 取值范围0~3 |
| key | string | 密钥字符串,支持 "0B:XX:XX" 或 "0BXX" 格式,默认"FF:FF:FF:FF:FF:FF" |
| keyType | string | 密钥类型字符串,支持 "A" 或 "B" 默认A |
扇区数据写入
写入扇区数据,成功会触发NFCManager.registrationCallback/case "onMifareReadSuccess"://扇区数据读取成功
//uniapp 去掉as NFCManager.MifareOption类型转换,uniapp-x项目保留
NFCManager.writeMifareClassic({
sector: 0,
block: 0,
key: "FF:FF:FF:FF:FF:FF",
keyType: "A",
data: "123456789"
} as NFCManager.MifareOption)
扇区数据写入参数说明:
| 参数 | 参数类型 | 说明 |
|---|---|---|
| sector | number | 扇区号 取值范围0~15 |
| block | number | 块索引 取值范围0~3 |
| key | string | 密钥字符串,支持 "0B:XX:XX" 或 "0BXX" 格式,默认"FF:FF:FF:FF:FF:FF" |
| keyType | string | 密钥类型字符串,支持 "A" 或 "B" 默认A |
设备是否支持NFC
let isEnable = NFCManager.isNfcAvailable();
console.log(isEnable ? "NFC可用" : "NFC不可用");
uniapp-x完整示例
<template>
<view>
<image class="logo" src="/static/logo.png" @click="startNFCScan"></image>
<text class="title" @click="onceDiscoverySession">单独扫描</text>
<text class="title" @click="startTagScanning">NDEF读取</text>
<text class="title" @click="writeNDEF">NDEF写入</text>
<text class="title" @click="readMifareClassic">扇区读取</text>
<text class="title" @click="writeMifareClassic">扇区写入</text>
<text class="title" @click="isNfcAvailable">是否支持NCF</text>
</view>
</template>
<script>
import *as NFCManager from '../../uni_modules/yt-nfc'
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
NFCManager.registrationCallback(res => {
let functionName = `${res["functionName"]}`;
let msg = `${res["msg"]}`;
switch (functionName) {
case "onNDEFReadSuccess"://读取ndef数据成功回调
{
let ndefRecords = res["ndefRecords"] as Array<Map<string, any>>;
if (ndefRecords.length > 0) {
let ndefRecord = ndefRecords[0];
let typeNameFormat = ndefRecord["typeNameFormat"] as string
let type = ndefRecord["type"] as string
let typeHex = ndefRecord["typeHex"] as string
let identifier = ndefRecord["identifier"]
let payloadHex = ndefRecord["payloadHex"]
let content = ndefRecord["content"]
let payloadType = ndefRecord["payloadType"]
console.log(`读取ndef数据成功--typeNameFormat:${typeNameFormat} type:${type} typeHex:${typeHex} identifier:${identifier} payloadHex:${payloadHex} content:${content} payloadType:${payloadType}`)
}
}
break;
case "onNDEFWriteSuccess"://ndef数据写入成功回调
{
console.log(msg);
}
break;
case "onMifareReadSuccess"://扇区数据读取成功
{
let sector = res["sector"];
let block = res["block"];
let data = res["data"];
console.log(`扇区数据读取成功--扇区:${sector} 块:${block} 数据:${data}`);
}
break;
case "onMifareWriteSuccess"://扇区数据写入成功
{
let sector = res["sector"];
let block = res["block"];
console.log(`扇区数据写入成功--扇区:${sector} 块:${block}`);
}
break;
case "onTagDetected"://标签检测回调
{
let idString = res["idString"] as string;
let tagType = res["tagType"] as string;
console.log(`检测到标签--唯一标识:${idString} 标签类型:${tagType}`)
}
break;
case "onError"://错误回调
{
console.log(msg);
}
break;
default:
break;
}
})
},
methods: {
//nfc读取
startTagScanning() {
NFCManager.startTagScanning()
},
startNFCScan() {
NFCManager.startNFCScan()
},
//ndef数据写入
writeNDEF() {
NFCManager.writeNDEF({
contentType: "URL",
content: "https://ext.dcloud.net.cn/",
tagFormat: "NFC_WELL_KNOWN",
identifier: ""
} as NFCManager.WriteNDEFOption)
},
//扇区读取
readMifareClassic() {
NFCManager.readMifareClassic({
sector: 0,
block: 0,
key: "FF:FF:FF:FF:FF:FF",
keyType: "A"
} as NFCManager.MifareOption)
},
//扇区写入
writeMifareClassic() {
NFCManager.writeMifareClassic({
sector: 0,
block: 0,
key: "FF:FF:FF:FF:FF:FF",
keyType: "A",
data: "123456789"
} as NFCManager.MifareOption)
},
//单独检测(扫描)
onceDiscoverySession() {
NFCManager.startNFCDiscoverySession();
},
//是否支持NFC
isNfcAvailable() {
let isEnable = NFCManager.isNfcAvailable();
console.log(isEnable ? "NFC可用" : "NFC不可用");
}
}
}
</script>
<style>
.logo {
height: 100px;
width: 100px;
margin: 100px auto 25px auto;
}
.title {
font-size: 18px;
color: #8f8f94;
text-align: center;
margin-top: 30rpx;
}
</style>

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 247
赞赏 2
下载 13686077
赞赏 1851
赞赏
京公网安备:11010802035340号