NDEF
NDEF (NFC Data Exchange Format) — формат данных NFC Forum: сообщение из одной или нескольких записей, у каждой свой тип, флаги и полезная нагрузка.
Как устроено сообщение NDEF
Единица обмена в NDEF — сообщение (message), внутри него лежат одна или несколько записей (record). Каждая запись начинается с заголовка: флаги MB и ME отмечают первую и последнюю запись в сообщении, трёхбитное поле TNF (Type Name Format) объясняет, как трактовать тип, дальше идут длина типа, длина данных, сам тип, необязательный ID и полезная нагрузка (payload).
TNF — ключ ко всему разбору. Значение 0x01 означает «известный тип NFC Forum» с короткими именами вроде U или T, 0x02 — MIME-тип, 0x04 — внешний тип вендора. Без TNF устройство не поймёт, что за байты лежат в поле типа, и не выберет обработчик.
Типы записей и выбор действия
| Запись | Что кодирует | Что делает телефон |
|---|---|---|
| URI (U) | Ссылку, tel:, mailto: | Предлагает открыть в браузере, позвонить, написать письмо |
| Text (T) | Строку с кодом языка | Показывает текст, действия не предлагает |
| MIME | Данные с медиатипом: параметры Wi-Fi, vCard | Передаёт приложению, заявившему этот тип |
| Smart Poster (Sp) | Ссылку плюс заголовок и рекомендуемое действие | Открывает ссылку с подписью вместо голого URL |
Разбор идёт на уровне системы: телефон реагирует на первую запись, которую умеет обработать, остальные достаются приложению. У URI-записи первый байт полезной нагрузки — префикс-сокращение: 0x04 разворачивается в https://, 0x02 — в https://www., 0x05 — в tel:. Экономия в семь-восемь байт там, где всей памяти полторы сотни, вполне ощутима. Про сами носители — в термине NFC-метка.
Сколько влезает и при чём тут QR
Объём упирается в память чипа. У массового NTAG213 — 144 байта пользовательской памяти, у NTAG215 — 504, у NTAG216 — 888. Часть съедают служебные байты обёртки и заголовков, так что 144 байта — это строка примерно в сотню символов. Длинная ссылка с utm-метками туда не влезет, поэтому в метки пишут короткий адрес редиректа: он разворачивается на сервере, даёт статистику и позволяет поменять цель, не переклеивая наклейку.
С QR логика та же, только ограничение другое: не память чипа, а версия символа и уровень коррекции. Отсюда привычная связка на одной табличке: касание для тех, у кого метка читается, камера — для остальных. Создать QR-код со ссылкой можно за минуту и без оборудования, тогда как метки надо купить и записать.