NDEF协议(数据格式和应用层最关键的协议)
摘要:NDEF(NFC数据交换格式)是NFC论坛定义的标准数据封装规范,用于NFC设备间传输结构化信息。NDEF消息由多个记录组成,每条记录包含MB/ME标志位、TNF类型标识(如文本、URI、MIME等)及有效载荷。常见应用包括打开网页(URIRecord)、交换名片(SmartPoster)和设备认证。NDEF作为高层数据格式,运行在NFC底层协议之上,类似"货物格式"与&
一、基本概念
NDEF(NFC Data Exchange Format,NFC数据交换格式):NFC Forum指定的一个轻量级的数据封装规范,用于NFC设备之间(手机、标签、卡等)传输结构化信息。它定义了如何将数据(如文本、URL、名片等)打包成NDEF消息和记录,并通过NFC载体(如标签或点对点)传输。他是NFC Forum定义的唯一官方数据格式,ISO 14443、ISO 15693、FeliCa等底层协议,只要设备支持NFC,就能互通数据。
二、NDEF 的结构组成
1. NDEF Message(NDEF 消息)
-
一个 NDEF Message 由一组 NDEF Record(记录)组成。
-
一个 NFC 标签只能包含 一个 NDEF 消息。
mathematica复制编辑NDEF Message ├── NDEF Record 1 ├── NDEF Record 2 └── ...
2. NDEF Record(NDEF 记录)
每条记录包括以下字段:
| 字段名 | 长度 | 含义 |
|---|---|---|
| MB (Message Begin) | 1bit | 是否是第一条记录 |
| ME (Message End) | 1bit | 是否是最后一条记录 |
| CF (Chunk Flag) | 1bit | 是否是分段数据 |
| SR (Short Record) | 1bit | Payload 长度是否为 1 字节 |
| IL (ID Length) | 1bit | 是否包含 ID 长度字段 |
| TNF (Type Name Format) | 3bit | 表示记录的数据类型 |
| TYPE LENGTH | 1 字节 | Type 字段长度 |
| PAYLOAD LENGTH | 1-4 字节 | Payload 数据长度 |
| ID LENGTH(可选) | 1 字节 | ID 字段长度(可选) |
| TYPE | 可变 | 数据类型(如文本、URI等) |
| ID(可选) | 可变 | 记录唯一 ID |
| PAYLOAD | 可变 | 实际数据 |
三、TNF:Type Name Format(类型命名格式)
TNF 是 NDEF 中的核心字段,用来标识 payload 的类型。常用 TNF 类型如下:
| TNF 值 | 含义 | 示例用途 |
|---|---|---|
| 0x01 | Well-known type | 文本、URI 等标准类型 |
| 0x02 | MIME media type | image/png, text/html 等 |
| 0x03 | Absolute URI | 以完整 URI 为类型标识 |
| 0x04 | External type | 自定义应用私有类型 |
| 0x05 | Unknown | 不知道 Payload 类型 |
| 0x06 | Unchanged | 用于 Chunked 分段记录 |
四、常见 NDEF 记录类型
✅ 1. Text Record(文本记录)
-
TNF = 0x01(Well-known)
-
TYPE = “T”
-
PAYLOAD = 语言编码长度[文本内容]
-
例如:"enHello world"
✅ 2. URI Record(超链接)
-
TNF = 0x01
-
TYPE = “U”
-
PAYLOAD = URI标识符码
-
URI标识符码:例如0x01表示“http://www.”
-
例如:
arduino复制编辑Payload: 0x01 + "example.com" 等效URL: http://www.example.com
✅ 3. MIME Type Record(媒体类型记录)
-
TNF = 0x02
-
TYPE = “text/plain”, “image/png” 等标准 MIME 类型
-
Payload 是实际的内容,例如一段 HTML 文本或 PNG 图像数据
✅ 4. Smart Poster(复合结构)
-
一个包含多个记录的 NDEF 消息组合,如 URI + Text
-
用于展示同时包含标题和链接的 NFC 标签
五、NDEF 实际案例
假设你扫描一个 NFC 标签,自动打开网页 https://chat.openai.com:
NDEF 记录结构大致如下:
-
MB = 1, ME = 1, SR = 1
-
TNF = 0x01(Well-known)
-
TYPE = “U”(URI)
-
PAYLOAD =
0x01 + "chat.openai.com"→ 0x01 表示 http://www.
六、NDEF 的使用场景
-
📲 手机扫码标签:打开网站、下载 App、加入 WiFi
-
🎫 名片交换:vCard 格式打包成 NDEF
-
🔐 身份认证:将身份标识打包后发送给后台验证
-
📦 数据通信:Android Beam、iOS NFC、蓝牙配对
七、NDEF 与 NFC 的关系总结
| 项目 | 内容 |
|---|---|
| NFC | 一种近场通信技术,涵盖物理层、电磁波、通信协议(如 ISO 14443)等 |
| NDEF | 一个高层的数据封装格式,运行在 NFC 之上,用于统一数据结构和交换方式 |
| 举例 | NFC 是“道路”,NDEF 是“车辆上的货物格式” |
八、NDEF 与 Android、iOS 开发的关系
-
Android 提供了完整的 NDEF 读写 API(
NdefMessage、NdefRecord) -
iOS 支持读取 NDEF(iPhone 7及以后),写入功能较晚开放
-
通用框架如:
React Native NFC Manager,NFC Tools,Flutter NFC
更多推荐



所有评论(0)