HarmonyOS 6.0 NFC标签读写与碰一碰连接——物联网应用的近场入口
手机碰一碰 NFC 标签就弹出配置页、碰一碰配网 WiFi、碰一碰开门禁——NFC 是智能家居和 IoT 场景的关键入口。HarmonyOS NEXT 提供了完整的 NFC API标签识别、NDEF 读写、前台分发优先注册。这篇把 NFC 近场通信的核心用法讲清楚。NFC 通信概览NFC近场通信的核心概念Tag标签——NFC 贴纸、NFC 卡片等被动设备NDEF——NFC 数据交换格式标准化的数据组织方式前台分发——APP 在前台时优先接收 NFC 意图AAR——Android Application Record碰一碰自动打开指定 APPimport{tag}fromkit.ConnectivityKitimport{ndef}fromkit.ConnectivityKit权限配置{ requestPermissions: [ { name: ohos.permission.NFC_TAG }, { name: ohos.permission.NFC_ADAPTER } ] }标签检测标签靠近手机时系统通过 Ability 的 onNewWant 分发 NFC 意图。// EntryAbility.etsonNewWant(want:Want,launchParam:AbilityConstant.LaunchParam):void{lettagInfo:tag.TagInfo|nullnulltry{tagInfotag.getTagInfo(want)}catch(e){return}if(tagInfonull)return// 判断标签类型if(tag.isNdef(tagInfo)){letndefTag:ndef.NdefTagndef.getNdefTag(tagInfo)// 读取 NDEF 内容}}要点getTagInfo 从 want 中提取标签信息isNdef 判断是否为 NDEF 格式标签。非 NDEF 标签如 MifareClassic用对应的 getXXXTag 方法。NDEF 读写NDEF 是最常用的 NFC 数据格式——类似JSON for NFC。读取 NDEFletndefTag:ndef.NdefTagndef.getNdefTag(tagInfo)letndefMessage:ndef.NdefMessagendefTag.getNdefMessage()letrecords:ndef.NdefRecord[]ndefMessage.getRecords()for(leti:number0;irecords.length;i){letrecord:ndef.NdefRecordrecords[i]letpayload:stringrecord.payloadasstringletrecordType:stringrecord.recordTypeasstring// URI 类型: recordType U// 文本类型: recordType T}写入 NDEF// 创建 NDEF 消息leturiRecord:ndef.NdefRecordndef.createUriRecord(https://harmonyos.com)letndefMsg:ndef.NdefMessagendef.createNdefMessage([uriRecord])// 写入标签ndefTag.writeNdef(ndefMsg)创建不同类型的 NDEF Record// URI 记录leturi:ndef.NdefRecordndef.createUriRecord(https://example.com)// 文本记录lettext:ndef.NdefRecordndef.createTextRecord(zh,你好HarmonyOS)// MIME 记录letmime:ndef.NdefRecordndef.createMimeRecord(application/json,{key:value})// AAR 记录碰一碰打开APPletaar:ndef.NdefRecordndef.createAarRecord(com.example.myapp)要点AAR 记录让手机碰标签时自动打开指定包名的 APP实现碰一碰直连。前台分发当多个 APP 都能处理 NFC 标签时前台分发让当前 APP 优先接收。import{tag}fromkit.ConnectivityKit// 注册前台分发letelementName:ElementName{bundleName:com.example.myapp,abilityName:EntryAbility}lettechList:string[][][[ndef,ndef-formatable]]tag.registerForegroundDispatch(elementName,techList)// 取消前台分发tag.unregisterForegroundDispatch(elementName)要点registerForegroundDispatch 在 Ability 的 onForeground 注册onBackground 取消。techList 指定感兴趣的标签技术类型。NFC 碰一碰场景模拟 Demo由于 NFC 需要真机 NFC 标签这里用模拟方式展示完整交互流程。interfaceNfcRecord{id:stringtype:stringcontent:stringtime:string}EntryComponentstruct NfcSimDemo{StatenfcRecords:NfcRecord[][]StatetagDetected:booleanfalseStatecurrentTagType:stringStatendefContent:stringStatewriteInput:stringhttps://harmonyos.comStatestatusMsg:string将NFC标签靠近手机...build(){Column({space:16}){Text(NFC 碰一碰模拟).fontSize(22).fontWeight(FontWeight.Bold).width(100%)Column(){Column().width(100).height(100).borderRadius(50).backgroundColor(this.tagDetected?#E8F5E9:#F5F5F5).border({width:3,color:this.tagDetected?#4CAF50:#E0E0E0,style:BorderStyle.Dashed})Text(this.tagDetected?标签已检测:等待NFC标签).fontSize(14).fontColor(this.tagDetected?#4CAF50:#999999).margin({top:8})}.width(100%).alignItems(HorizontalAlign.Center).padding(16)Row({space:8}){Button(模拟标签靠近).onClick((){this.tagDetectedtruethis.currentTagTypeNDEFthis.ndefContenthttps://harmonyos.comthis.addRecord(检测,发现NDEF标签)this.statusMsg标签已检测到模拟})Button(模拟标签移开).onClick((){this.tagDetectedfalsethis.ndefContentthis.statusMsg标签已移开this.addRecord(移开,标签离开)})}if(this.tagDetected){Column({space:8}){Text(标签信息).fontSize(16).fontWeight(FontWeight.Bold).width(100%)Row(){Text(类型:).fontSize(14).fontColor(#666666).width(60)Text(this.currentTagType).fontSize(14).fontWeight(FontWeight.Medium)}Row(){Text(NDEF:).fontSize(14).fontColor(#666666).width(60)Text(this.ndefContent||(空)).fontSize(14).fontColor(#1a73e8)}TextInput({text:this.writeInput,placeholder:写入内容}).onChange((value:string){this.writeInputvalue})Row({space:8}){Button(写入NDEF).onClick((){this.ndefContentthis.writeInputthis.addRecord(写入,this.writeInput)})Button(读取NDEF).onClick((){this.addRecord(读取,this.ndefContent||(空))})Button(清空).onClick((){this.ndefContentthis.addRecord(清空,NDEF已清除)})}}.width(100%).padding(16).borderRadius(12).backgroundColor(#FFFFFF)}// 操作记录if(this.nfcRecords.length0){Text(操作记录:).fontSize(16).fontWeight(FontWeight.Bold).width(100%)ForEach(this.nfcRecords.slice().reverse(),(record:NfcRecord){Row({space:8}){Text(record.time).fontSize(11).fontColor(#999999).width(60)Text(record.type).fontSize(12).fontWeight(FontWeight.Medium).fontColor(#1a73e8).width(50)Text(record.content).fontSize(12).fontColor(#333333).layoutWeight(1)}.padding(4)},(record:NfcRecord)record.id)}Text(this.statusMsg).fontSize(12).fontColor(#999999)}.width(100%).padding(20)}privateaddRecord(type:string,content:string):void{this.nfcRecords.push({id:Date.now().toString(),type:type,content:content,time:newDate().toLocaleTimeString()})}}碰一碰配网实战最常见的 IoT 场景——手机碰一碰设备上的 NFC 标签自动跳转配网页面输入 WiFi 密码后下发给设备。// NDEF 标签中写入的内容// URI: https://myapp.com/setup?deviceABC123// AAR: com.example.iotapp// APP 收到 NFC 意图后解析onNewWant(want:Want,launchParam:AbilityConstant.LaunchParam):void{lettagInfo:tag.TagInfo|nulltag.getTagInfo(want)if(tagInfonull)returnif(tag.isNdef(tagInfo)){letndefTag:ndef.NdefTagndef.getNdefTag(tagInfo)letmsg:ndef.NdefMessagendefTag.getNdefMessage()letrecords:ndef.NdefRecord[]msg.getRecords()// 解析 URI 中的设备 ID// 跳转到配网页面leturi:stringrecords[0].payloadasstringletdeviceId:stringthis.parseDeviceId(uri)router.pushUrl({url:pages/WifiSetup,params:{deviceId:deviceId}})}}标签类型判断不同标签支持不同的技术标签类型判断方法适用场景NDEFtag.isNdef()通用数据读写MifareClassictag.isMifareClassic()门禁卡、公交卡MifareUltralighttag.isMifareUltralight()NFC 贴纸NfcAtag.isNfcA()ISO 14443-3ANfcBtag.isNfcB()ISO 14443-3BNfcFtag.isNfcF()FeliCaNfcVtag.isNfcV()ISO 15693要点先判断标签类型再用对应的 API 操作。NDEF 是最通用的格式优先使用。踩坑清单问题原因解决getTagInfo 返回 nullwant 不是 NFC 意图检查 intent 来源isNdef 返回 false标签不是 NDEF 格式空白标签先格式化writeNdef 报错标签只读或容量不足检查标签是否可写前台分发不生效未在 onForeground 注册onForeground 注册、onBackground 取消碰标签打开别的 APP未注册前台分发注册前台分发 AAR 记录NDEF 解析乱码编码处理不对URI 类型用 UTF-8文本注意语言码readNdef 返回空标签无 NDEF 消息先检查 NDEF 消息是否存在标签检测延迟系统轮询间隔前台分发 注册 techList多标签干扰同时靠近多个标签一次只靠近一个标签createUriRecord 格式错URI 不完整必须含协议前缀 https://

相关新闻

HarmonyOS 6.0 蓝牙BLE设备通信实战——智能手环/蓝牙秤接入全流程

HarmonyOS 6.0 蓝牙BLE设备通信实战——智能手环/蓝牙秤接入全流程

健康类 APP 连智能手环读心率、连蓝牙秤读体重、连血糖仪读数据——BLE(低功耗蓝牙)是这些 IoT 场景的通信基础。HarmonyOS NEXT 提供了完整的 BLE API:扫描发现、GATT 连接、服务发现、特征值读写、通知订阅。这篇从零到一讲清楚 BLE 通信全…

2026/8/10 11:46:40 阅读更多 →
ncmdumpGUI:解锁网易云音乐NCM加密文件的终极解决方案

ncmdumpGUI:解锁网易云音乐NCM加密文件的终极解决方案

ncmdumpGUI:解锁网易云音乐NCM加密文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾遇到过这样的情况:从网易…

2026/8/10 11:46:40 阅读更多 →
C语言:自定义类型:结构体

C语言:自定义类型:结构体

文章目录前言1.什么是结构体?2.结构体类型的声明2.1结构的声明2.2 结构体变量的创建和初始化2.3 结构的特殊声明2.4 结构体的自引用3.结构体内存对齐3.1 对齐规则3.2 为什么需要内存对齐?3.3 修改默认对齐数3.4 结构体传参4.结构体实现位段4.1 位段的定义…

2026/8/10 11:46:40 阅读更多 →

最新新闻

JADB完全指南:纯Java实现的ADB客户端,让Android开发更高效

JADB完全指南:纯Java实现的ADB客户端,让Android开发更高效

JADB完全指南:纯Java实现的ADB客户端,让Android开发更高效 【免费下载链接】jadb ADB Client in pure Java. 项目地址: https://gitcode.com/gh_mirrors/ja/jadb JADB是一个纯Java实现的ADB客户端,专为Android开发打造。它让开发者无需…

2026/8/10 17:15:12 阅读更多 →
终极指南:5分钟掌握EscapeFromTarkov训练器40+强大功能,离线塔科夫体验全面升级

终极指南:5分钟掌握EscapeFromTarkov训练器40+强大功能,离线塔科夫体验全面升级

终极指南:5分钟掌握EscapeFromTarkov训练器40强大功能,离线塔科夫体验全面升级 【免费下载链接】EscapeFromTarkov-Trainer Escape from Tarkov (EFT) Trainer - Internal 项目地址: https://gitcode.com/gh_mirrors/es/EscapeFromTarkov-Trainer …

2026/8/10 17:15:12 阅读更多 →
MusicFree歌词功能终极指南:3步搞定歌词同步与个性化显示

MusicFree歌词功能终极指南:3步搞定歌词同步与个性化显示

MusicFree歌词功能终极指南:3步搞定歌词同步与个性化显示 【免费下载链接】MusicFree 插件化、定制化、无广告的免费音乐播放器 项目地址: https://gitcode.com/maotoumao/MusicFree 你是否也曾遇到过这样的困扰?音乐播放时歌词总是慢半拍&#x…

2026/8/10 17:15:12 阅读更多 →
Pingo:Go语言插件开发终极指南,让你的应用轻松扩展功能

Pingo:Go语言插件开发终极指南,让你的应用轻松扩展功能

Pingo:Go语言插件开发终极指南,让你的应用轻松扩展功能 【免费下载链接】pingo Plugins for Go 项目地址: https://gitcode.com/gh_mirrors/pin/pingo Pingo是一个简单独立的Go语言插件库,能帮助开发者为Go程序创建插件。由于Go语言是…

2026/8/10 17:15:12 阅读更多 →
生命涌现的小龙虾技能之【Smart Baby Cry Analysis Skill | 婴儿哭声智能解析技能】简介

生命涌现的小龙虾技能之【Smart Baby Cry Analysis Skill | 婴儿哭声智能解析技能】简介

🍼 Smart Baby Cry Analysis Skill | 婴儿哭声智能解析技能 智能分析中枢 图片/视频智能分析 结构化报告 历史报告云端查询 🧭 技能概览 | Overview 模块内容🏷️ 技能名称婴儿哭声智能解析技能🎯 核心目标婴儿哭声智能解析技…

2026/8/10 17:15:12 阅读更多 →
GSEApy vs GSEA桌面版:哪款基因集富集分析工具更适合你的研究?

GSEApy vs GSEA桌面版:哪款基因集富集分析工具更适合你的研究?

GSEApy vs GSEA桌面版:哪款基因集富集分析工具更适合你的研究? 【免费下载链接】GSEApy Gene Set Enrichment Analysis in Python 项目地址: https://gitcode.com/gh_mirrors/gs/GSEApy GSEApy是一款基于Python的基因集富集分析工具,能…

2026/8/10 17:14:12 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →