Перейти к содержимому

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-код со ссылкой можно за минуту и без оборудования, тогда как метки надо купить и записать.