- Что такое nfc?
- 2 、 пассивный режим nfc
- Iso 14443
- Nfc vs инфракрасный и bluetooth
- Tnf_well_known с rtd_text (mime-тип с записью простого текста)
- Архитектура nfc
- Безопасно ли это?
- В каких смартфонах есть nfc?
- Для чего оно нужно?
- Использование nfc
- Как пользоваться?
- Какой длины может быть ndef-сообщение?
- Метки nfc
- Открываем все двери
- Сравнение nfc, bluetooth и инфракрасного порта
- Структура ndef
- Типы nfc-меток
- Читаем ndef-сообщение
- Вместо заключения
Что такое nfc?
Как многие наверняка знают, NFC — технология высокочастотной беспроводной связи с малым (несколько сантиметров, но не больше 10 см) радиусом действия. В основе Near Field Communication (обмена на ближнем расстоянии) лежит радиочастотная идентификация (RFID) — данные, которые хранятся в транспондерах, считываются и записываются при помощи радиосигналов. Активные и пассивные объекты, в свою очередь, идентифицируются автоматически.
Но стандартного определения здесь явно недостаточно. История NFC довольно интересная: технология берет свое начало более 12 лет назад — именно тогда три технологических гиганта (Nokia, Sony и NXP Semiconductor) решили создать форум NFC для развития интерфейса касательного взаимодействия между устройствами.
Несмотря на то, что сам интерфейс был далеко не быстрым (и остается таким по сей день), идея передачи небольших данных с низким энергопотреблением все же взяла свое. RFID заработала по-новому и получила массовое признание. В результате многие производители смартфонов, аксессуаров и других устройств сейчас не обделяют NFC ни один свой новый продукт.
Рабочей частотой для NFC является 13,56 МГц, максимальная скорость обмена данными едва превышает 400 Кбит/с. Однако в данном случае огромную роль играет время установления соединения: чтобы подключить два устройства при помощи этой технологии, понадобится менее десятой доли секунды.
Принцип работы NFC основан на электромагнитной индукции. Суть в том, что при помощи антенны передатчик считывателя постоянно излучает сигнал в форме синусоиды на вышеупомянутой чистоте.
Датчик (или Listening Device) также оснащен рамочной антенной. Когда датчик и считыватель (Polling Device) оказываются на расстоянии, достаточном для работы NFC, и та, и другая катушка образуют воздушный трансформатор. Магнитное поле порождается переменным током в катушке считывателя, после этого ток создается во второй катушке — датчика. Этой энергии запросто хватает для работы последнего, поэтому NFC способна работать с пассивными устройствами.
В это время происходит шунтирование антенны одним из транзисторов устройства-передатчика, откуда возникает модуляция высокочастотного сигнала. Этот сигнал и «ловит» считыватель. В основном для NFC используется Манчестерское кодирование (с коэффициентом амплитудной модуляции 10 %). Также используется модифицированный код Миллера, правда в этом случае скорость едва будет превышать 100 Кбит/с.
В пассивном режиме считыватель создает электромагнитное поле, NFC-метка модулирует его и формирует ответ. Иными словами, метке вовсе не обязательно быть подключенной к источнику питания или иметь встроенный аккумулятор, поэтому ее размеры можно сократить до минимума. Если же мы имеем два устройства с двумя активными сигналами, здесь все проще — они работают, грубо говоря, «по очереди».
Пассивная NFC-метка выглядит примерно так:
В смартфонах антенну NFC, как правило, закрепляют под задней крышкой для более устойчивого сигнала.
После этого ваш смартфон готов выступать сразу в нескольких ипостасях. Он может стать не только платежным средством и ключом, но и также средством идентификации владельца, проездным билетом или просто бонусной картой. Вот основные режимы работы смартфона с NFC на борту.
- Пиринг — два активных устройства связываются между собой и обмениваются данными. Это могут быть как два смартфона, так и смартфон и сторонний аксессуар. Например, можно быстро установить соединение между телефоном и внешней колонкой или наушниками. Главное, чтобы у девайса была заявлена поддержка NFC: среди таких устройств KR — 8100, Dacom Athlete, Bluedio R Legend и другие.
- Чтение и запись — смартфон как считывает коды с NFC-метки, так и записывает информацию в ее память.
- Эмуляция карты — смартфон становится полноценной банковской картой. Достаточно поднести его к терминалу, чтобы совершить оплату, причем в качестве карты могут также выступать, например, умные часы.
2 、 пассивный режим nfc
В пассивном режиме NFC исходному устройству NFC (также известному как основное устройство) требуется блок питания. Ведущее устройство использует источник питания для обеспечения радиочастотного поля и отправляет данные на целевое устройство NFC (также известное как ведомое устройство).
Радиочастотное поле, генерируемое первичным устройством, используется для питания цепи ведомого устройства. Получены данные, отправленные основным устройством. Модуляция нагрузки используется для передачи данных от ведомого устройства обратно к основному устройству с той же скоростью.
Поскольку этот рабочий режим не генерирует РЧ-поле от устройства, а пассивно принимает РЧ-поле, генерируемое ведущим устройством, он называется пассивным режимом. В этом режиме ведущее устройство NFC может обнаруживать бесконтактную карту или целевое устройство NFC и устанавливать с ними соединение.
Iso 14443
ISO 14443 — это хорошо известный международный стандарт, изначально разработанный для бесконтактных чип-карт в радиосвязи 13.56 МГц. ISO 14443 определяет стек протоколов от беспроводного уровня до командного протокола. Существует две версии беспроводного уровня ISO14443-2, которые имеют разную модуляцию и bit методы кодирования.
ISO 14443 определяет две версии структуры пакета и основную часть протокола (ISO 14443-3). Самый высокий уровень стека ISO определяет командный интерфейс (ISO 14443-4), который передает информацию.
Nfc vs инфракрасный и bluetooth
NFC также превосходит инфракрасный порт и передачу по Bluetooth. Будучи ориентированным на потребителя торговым механизмом, NFC быстрее, надежнее и намного проще, чем инфракрасный порт, и не требует строгого согласования для передачи данных. По сравнению с Bluetooth, NFC подходит для транзакций на короткие расстояния и обмена важными данными, такими как финансовая информация или конфиденциальная личная информация.
Bluetooth может восполнить недостаток дальности связи NFC и подходит для передачи данных на большие расстояния. Следовательно, NFC и Bluetooth дополняют друг друга и сосуществуют. Быстрый и легкий протокол NFC может использоваться для управления процессом сопряжения Bluetooth между двумя устройствами, способствуя использованию Bluetooth.
Tnf_well_known с rtd_text (mime-тип с записью простого текста)
Создать NDEF-запись TNF_WELL_KNOWN можно следующим образом:
Kotlin
fun createTextRecord(payload: String, locale: Locale, encodeInUtf8: Boolean): NdefRecord {
val langBytes = locale.language.toByteArray(Charset.forName("US-ASCII"))
val utfEncoding = if (encodeInUtf8) Charset.forName("UTF-8") else Charset.forName("UTF-16")
val textBytes = payload.toByteArray(utfEncoding)
val utfBit: Int = if (encodeInUtf8) 0 else 1 shl 7
val status = (utfBit langBytes.size).toChar()
val data = ByteArray(1 langBytes.size textBytes.size)
data[0] = status.toByte()
System.arraycopy(langBytes, 0, data, 1, langBytes.size)
System.arraycopy(textBytes, 0, data, 1 langBytes.size, textBytes.size)
return NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, ByteArray(0), data)
}
Java
public NdefRecord createTextRecord(String payload, Locale locale, boolean encodeInUtf8) {
byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII"));
Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16");
byte[] textBytes = payload.getBytes(utfEncoding);
int utfBit = encodeInUtf8 ? 0 : (1 << 7);
char status = (char) (utfBit langBytes.length);
byte[] data = new byte[1 langBytes.length textBytes.length];
data[0] = (byte) status;
System.arraycopy(langBytes, 0, data, 1, langBytes.length);
System.arraycopy(textBytes, 0, data, 1 langBytes.length, textBytes.length);
NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_TEXT, new byte[0], data);
return record;
}
Intent-фильтр для такой NDEF-записи будет таким:
Архитектура nfc
В архитектуре NFC есть несколько уровней. Самый низкий из них — физический, который реализован ЦПУ и другим аппаратным комплексом, через который происходит взаимодействие. В середине находятся данные о пакетах и транспортный уровень, затем формат данных уровней, и в конце программное обеспечение.
На физическом уровне NFC работает по алгоритму, описанному в ГОСТ для RFID (ГОСТ Р ИСО/МЭК 14443-2-2021), где говорится о маломощных радиосигналах частотой 13,56 МГц. Затем идёт уровень, который описывает разбивку потока данных на фреймы (ГОСТ Р ИСО/МЭК 14443-3-2021).
Любые радиоконтроллеры, которые используются в телефоне, планшете или подсоединяются к компьютеру или микроконтроллеру, являются отдельными аппаратными компонентами. Они взаимодействуют с главным процессором посредством одного или нескольких стандартных последовательных протоколов между устройствами: универсальный асинхронный приёмопередатчик (UART), последовательный периферийный интерфейс (SPI), последовательная шина данных для связи интегральных схем (I2C) или универсальная последовательная шина (USB).
Над этим находится несколько протоколов команд RFID, базирующихся на двух спецификациях. NFC чтение и запись меток базируется на оригинальном RFID ГОСТ Р ИСО/МЭК 14443A. Протоколы Philips/NXP Semiconductors Mifare Classic и Mifare Ultralight и NXP DESFire совместимы с ГОСТ Р ИСО/МЭК 14443A.
Обмен данными P2P NFC базируется на ГОСТ Р ИСО/МЭК 18092. Также на этом же стандарте базируются RFID-карты и метки Sony FeliCa, которые доступны в основном в Японии. Можно читать и записывать метки, основанные на этих стандартах, и не использовать NFC.
Они изображены на рисунке выше на уровне с другими управляющими протоколами, так как они используют одинаковый стандарт.
Безопасно ли это?
В начале 2000-х годов NFC-модули считались неуязвимыми для хакеров. Но уже в 2006-м программисты и инженеры описали ряд теоретических атак, которые могут использоваться для кражи информации и заражения смартфона вирусом. Кроме того, они предупредили производителей о легкости подмены сигнала и «клонирования» девайса при онлайн-оплатах или авторизации.
В 2021 году была выявлена критическая уязвимость NFC. Компания MWR Labs продемонстрировала публике процесс передачи вируса, заражения устройства и получения полного контроля над смартфоном за пять минут. Для этого пользователю достаточно было поднести девайс к пассивной метке, содержащей вредоносный код.
Дальше — больше. В середине 2021-х были созданы устройства, способные отслеживать обмен данными между двумя NFC-антеннами и даже вносить корректировки в сигнал на расстоянии до 5 метров. Это вызвало резонанс в IT-сфере: пользователи и разработчики приложений потребовали от производителей принять меры для устранения критических уязвимостей.
Сегодня сигналы NFC маскируются криптографическими алгоритмами, которые шифруют передаваемые данные и сбивают с толку устройства слежения. Такое решение повысило уровень безопасности до 99% — вероятность кражи файлов и копирования паролей при попытке атаки теперь меньше 1%.
Однако специалисты рекомендуют пользоваться технологией NFC осторожно. Чтобы не стать жертвой хакеров, вам нужно соблюдать следующие рекомендации:
В каких смартфонах есть nfc?
Перечисление всех устройств с поддержкой коммуникаций ближнего поля займет несколько страниц. Поэтому мы ограничимся кратким описанием самых интересных моделей, и начнем с продукции Apple.
Впервые NFC-антенны появились в iPhone 6. Одновременно с презентацией устройства была представлена и бесконтактная платежная система Apple Pay. Поддержка технологии есть во всех последующих смартфонах американского бренда, включая доступные SE. В большинстве моделей она предназначается исключительно для соединения с банковскими терминалами.
Разумный выбор — iPhone 11 Pro. Смартфон удобно ложится в руку и помещается в кармане. В любой момент вы сможете использовать его в качестве электронного кошелька. OLED-экран подстраивается под окружающее освещение, меняя яркость и цветовую температуру, поэтому изображение всегда остается четким и приятным для глаз.
Если говорить об Android-устройствах, выбор будет намного шире. Модуль NFC есть во всех классах — от ультрабюджетного до флагманского.
Самый доступный смартфон с поддержкой коммуникаций ближнего поля — Vertex Impress Click. Модель совместима со всеми функциям NFC-антенны, включая обмен файлами, авторизацию и бесконтактные платежи. Она полностью соответствует требованиям разработчиков — ее мощности достаточно для запуска Google Pay и мобильных приложений банков.
Куда интереснее другой бюджетный смартфон — ZTE Blade V9. В его активе широкоформатный экран с разрешением Full HD и процессор Qualcomm Snapdragon 450, позволяющий запускать большинство современных игр с минимальными или средними настройками графики.
Устройство также радует объемом памяти — 4 ГБ оперативной и 64 ГБ физической в базовой комплектации. Двойная камера смартфона с матрицей 16 Мп умеет снимать с эффектом боке. Владельцу доступно два способа разблокировки — с помощью отпечатков пальцев и функции распознавания лиц.
В среднем классе стоит отметить смартфон Xiaomi Redmi Note 8T, который оснащен актуальными технологиями по доступной цене. Его гордость — модная квадрокамера с разрешением 48 Мп, способная делать четкие фотографии днем и ночью. Процессор Qualcomm Snapdragon 665 поддерживает стабильный FPS в играх при средних или высоких настройках графики.
Оболочка операционной системы MIUI оптимизирует энергопотребление , поэтому батарея емкостью 4 000 мА*ч обеспечивает до 2 дней автономной работы. В устройстве также есть инфракрасный порт для дистанционного управления кондиционерами, телевизорами и другой бытовой техникой.
В категории «доступных флагманов» наиболее интересен Huawei P40 lite. Смартфон собран на базе процессора Kirin 810 со встроенной нейросетью. Искусственный интеллект ускоряет запуск приложений, сглаживает анимацию при высоких нагрузках, предотвращает падение FPS и снижает температуру внутренних компонентов в играх.
В премиум-классе нельзя пройти мимо бескомпромиссного Samsung Galaxy S20 Ultra. Его счетверенная камера с перископным объективом делает снимки с десятикратным зумом без потери качества. И даже при 100-кратном зуме вы различите детали изображения: искусственный интеллект сглаживает контуры и «дорисовывает» текстуры.
Процессор Exynos 990 гарантирует исключительно плавную работу в любых сценариях — от неспешного пролистывания соцсетей до построения виртуальной реальности. Технология DeX позволяет превратить смартфон в стационарный компьютер, подключив к нему мышку, клавиатуру и монитор при помощи компактного адаптера.
Для чего оно нужно?
Еще в Android версии 4.0 появилась технология Beam, с помощью которой устройства могут обмениваться файлами и папками: сам обмен происходит при помощи Bluetooth или Wi-Fi Direct, однако для идентификации смартфонов используется именно NFC. Это позволяет сократить время, затрачиваемое на подключение устройств.
Кейсов применения NFC великое множество. Среди пользователей метро большой популярностью пользуется возможность считывания информации с билета при помощи смартфона. Установив специальные приложения, можно не только узнавать количество оставшихся поездок и срок годности билета, но и даже пополнять карту «Тройка» без использования терминалов в метрополитене.
Примечательно, что для этих целей можно использовать практически любой смартфон с NFC — от Xiaomi Mi5s Plus до Lenovo X3 Lite.
Использование nfc
Есть множество возможностей использования NFC:
- Режим эмуляции карты позволяет использовать данную технологию для бесконтактных платежей, например Google Wallet, или для оплаты или получения билетов в общественном транспорте.
- Есть несколько мобильных приложений, которые позволяют сохранить настройки для мобильного устройства на метках и в дальнейшем использовать их для быстрого изменения каких-либо настроек мобильного устройства (переход в режим виброзвонка, включения или выключения Wi-Fi на мобильном устройстве).
- На рынке постепенно появляются устройства, поддерживающие NFC, — стереосистемы, телевизоры, которые позволяют создавать пару с телефоном или планшетом для удалённого управления.
- NFC используется в системе здравоохранения для хранения идентификатора пациента и личных записей.
- В сфере управления материально-техническими ресурсами можно использовать NDEF записи для хранения информации о месте отправления товаров, об их прохождении различных промежуточных пунктов и тому подобном.
Как пользоваться?
Прежде всего, нужно определить, поддерживает ли смартфон технологию NFC. Лучше всего углубиться в технические характеристики конкретной модели или воспользоваться инструкцией по эксплуатации, вложенной в коробку. Если дополнительной информации под рукой нет, перейдите в настройки и выберите пункт «Беспроводная связь». В нем должен быть специальный раздел, посвященный антенне NFC и связанным с ней функциям.
Впрочем, на корпусе большинства устройств с поддержкой NFC есть специальный рисунок в виде стилизованной буквы N. Он расположен над активной антенной и пассивной меткой. Чтобы установить соединение, вам нужно поднести пиктограммы друг к другу.
Стоит отметить, что передача данных начнется только в том случае, если на смартфоне включена функция NFC. В Android-устройствах ее можно активировать следующими способами:
- Опустить «шторку» уведомлений и быстрых команд. Нажать на соответствующую кнопку и дождаться, пока она изменит цвет.
- Перейти в настройки, выбрать раздел «Беспроводная связь» и передвинуть ползунок рядом с надписью NFC.
- Открыть меню, найти пункт «Прочее» или «Еще». Активировать функцию NFC, разрешить передачу файлов и онлайн-оплаты.
Обратите внимание: порядок действий зависит от оболочки операционной системы, установленной на смартфоне. Если вы уверены в том, что устройство поддерживает NFC, но не можете найти соответствующий пункт в меню, воспользуйтесь официальным руководством на сайте производителя или обратитесь в техническую поддержку.
В случае с техникой Apple процедура немного сложнее. По умолчанию модуль NFC поддерживает только бесконтактные платежи. Чтобы воспользоваться этой функцией, вам нужно выполнить следующие действия:
- запустить приложение Wallet;
- нажать на символ « » в верхнем правом углу;
- сфотографировать банковскую карту, ввести реквизиты, при необходимости откорректировать номер;
- заполнить поля «Срок действия» и «CVV/CVC2»;
- дождаться ответа от банка, выдавшего карту.
Долгое время функционал NFC в iPhone был ограничен. Ситуация изменилась после выхода операционной системы iOS 13, в которой появилось стандартное приложение «Команды». Изначально оно предназначалось для управления умным домом, но пользователи быстро нашли ему иное применение.
Чтобы разблокировать другие функции NFC в iPhone, вам потребуется:
- запустить приложение «Команды»;
- открыть вкладку «Автоматизации»;
- нажать на символ « » в верхнем правом углу;
- пролистать список и найти в нем NFC;
- выбрать пункт «Тег NFC»;
- включить Bluetooth-наушники или другой беспроводной гаджет, подключить к iPhone;
- поднести устройство с меткой к задней панели смартфона чуть ниже камеры;
- подождать 2-3 секунды;
- после подключения открыть меню «Скрипты»;
- выбрать пункт «Задать место воспроизведения» и указать ваш iPhone;
- выбрать из списка подключаемое устройство;
- снять галочку в пункте «Спрашивать при выполнении» и вы сможете пользоваться NFC для мгновенной синхронизации.
К сожалению, такую процедуру нужно будет провести с каждым устройством. Но есть и хорошая новость: вы можете выполнить ее с любым гаджетом, в том числе не поддерживающим NFC. Для этого потребуется только соответствующая метка-наклейка, которая стоит не дороже 200 рублей.
Какой длины может быть ndef-сообщение?
Место на информацию в NDEF-записи ограниченно по размерам 2^32-1 байтами, однако можно делать цепочки записей внутри сообщения, чтобы переслать информацию большего размера. В теории нет ограничений на NDEF-сообщения, но на практике размер сообщения ограничивается возможностями устройств или меток, участвующих в обмене информацией.
Если в обмене участвуют только устройства, то длина сообщения будет ограничена вычислительной мощностью самого слабого из устройств, но стоит учесть, что устройства придётся долго держать рядом для пересылки всех данных. При взаимодействии смартфона и карты длина сообщения будет ограничена размером памяти карты.
В общем, обмен данными через NFC достаточно быстрый. Человек подносит мобильное устройство к метке, происходит краткий обмен информацией, и человек идёт дальше. Данная технология не была спроектирована для длительных обменов информацией, потому что устройства в буквальном смысле должны находится в паре сантиметров друг от друга.
Для того чтобы передать большой объем информации, устройства придётся держать друг рядом с другом длительное время, это может быть неудобным. Если нужно длительное взаимодействие между устройствами, то можно воспользоваться NFC для быстрого обмена данными о возможностях устройств и последующего включения одного из более подходящих способов передачи данных (Bluetooth, Wi-Fi и т.д.).
Метки nfc
Это еще один распространенный способ применения NFC в смартфоне. Метки NFC получили большую популярность в торговых и рекламных зонах: их встраивают в афиши, рекламные щиты, помещают на товары в магазинах. Обычно это небольшие стикеры, стоимость которых не превышает 50 рублей.
Вы можете создавать собственные NFC-метки, модернизировать их и затем использовать в повседневной жизни. Как правило, для этого используется сторонний софт вроде NFC TagWriter. Приложение довольно простое и позволяет записать на метку множество типов данных — от контакта и телефонного номера до закладки веб-браузера.
На самом деле NFC-метки — настоящий подарок, когда речь заходит об автоматизации. Например, можно наклеить метку на ноутбук и при помощи приложения Trigger настроить включение точки доступа, выбрав в качестве действия «Беспроводные и локальные сети».
Решение попроще — записать пароль от Wi-Fi на метку, наклеить ее на роутер, и потом всякий раз, когда гости спросят пароль, отправлять их к NFC-метке. Или еще: установить метку около кровати и сделать так, чтобы при прикосновении на смартфоне включался авиарежим (опять же с помощью Trigger).
Полезно будет и автомобилистам — записали на метку алгоритм запуска навигатора, наклеили ее на держатель для смартфона, и всякий раз, когда вы будете устанавливать устройство на это место, навигатор будет запускаться автоматически.
И таких примеров применения NFC-меток еще очень и очень много. Зачастую появление новых кейсов ограничивается вовсе не технологией, а фантазией пользователя.
Открываем все двери
Кто-то реализовывает подобное и в домашних условиях, но в основном использование NFC для идентификации и контроля пользователя характерно для предприятий и организаций. Турникеты и замки настраиваются таким образом, что при помощи метки, которая является пропуском, решают, стоит давать ее обладателю разрешение на вход или нет.
С NFC в смартфоне действительно открываются все двери — если не в буквальном смысле, то в переносном точно. Фактически пользователь получает универсальный инструмент, который, несмотря на скоростные ограничения, находит себе применение в самых разных ситуациях.
Сравнение nfc, bluetooth и инфракрасного порта
Товары | NFC | Блютуз | Инфракрасный порт |
Тип сети | Peer-на-Peer | Точка-многоточка | Peer-на-Peer |
Использовать расстояние | ≤0.1m | ≤10m | ≤1m |
Скорость передачи | 106, 212, 424 кбит / с, до 868 кбит / с | 2.1 Mbps | ~ 1.0 Мбит / с |
Время отклика | <0.1 с | 6s | 0.5s |
Безопасность | Высокая безопасность (аппаратная реализация) | Высокая безопасность (программная реализация) | Нет функций безопасности (кроме использования IRFM) |
Режим связи | Активно-активный / пассивный | Активный-Активный | Активный-Активный |
Цена | Низкий | Средний | Низкий |
Структура ndef
NDEF содержит информацию о байтовом представлении сообщений, которые могут содержать несколько записей. У каждой записи есть заголовок, в котором находятся метаданные (тип, длина и т.д.), и информацию для отправки. Если вернуться к аналогии с параграфом, то параграф формируется из предложений, относящихся к одной теме, так и в NDEF-сообщениях — хорошо, когда все записи относятся к одной тематике.
NDEF-сообщения в основном короткие, каждый обмен состоит из одного сообщения, каждая метка также содержит одно сообщение. Так как обмен NFC данными происходит при касании одного устройства другим или меткой, то будет неудобно передавать в одном сообщении текст целой книги, поэтому длина NDEF-сообщения сопоставима с длиной абзаца, но не целой книги.
NDEF-запись содержит информацию для пересылки и метаданные, как эту информацию интерпретировать. Каждая запись может быть разного типа, о чем объявляется в заголовке этой записи. Также в заголовке описывается какое место занимает запись в сообщении, после заголовка следует информация.
На рисунке ниже представлена полная информация о расположении бит и байт информации в NDEF-записи. Информация для пересылки занимает большую часть записи. Тип информации уточняет, как её интерпретировать, идентификатор информации опционален и используется для пересылки большого количества записей или перекрёстного обмена данными.
Типы nfc-меток
Существует четыре типа меток, описанных NFC-форумом, все они базируются на RFID-протоколах. Это делает NFC метки частично совместимыми со многими уже существующими RFID системами (например, Mifare и FeliCa). Хотя эти более старые системы не поддерживают NDEF, они, однако, могут опознавать NFC метки, которые совместимы с ними.
Например, считыватель RFID, который предназначен для работы с метками Mifare Ultralight, может считать идентификационный номер метки NFC 2 типа, хоть и не может прочитать закодированную NDEF информацию. Есть также пятый тип, который совместим с технологией, но при этом не является частью NFC-спецификации.
Типы 1, 2 и 4 основаны на ГОСТ Р ИСО/МЭК 14443A (состоит из четырёх частей: 1, 2, 3, 4), тип 3 — на ГОСТ Р ИСО/МЭК 18092. Более подробно про каждый из типов можно прочитать под спойлером.
- Основан на ГОСТ Р ИСО/МЭК 14443A;
- Может быть как только для чтения, так и для чтения/записи;
- Содержит от 96 байт до 2 кбайт памяти;
- Нет защиты данных от коллизий (прим. — коллизии могут возникнуть; когда два активных источника передают данные одновременно);
- Примеры: Innovision Topaz, Broadcom BCM20203.
Тип 2:
- Аналогично типу 1 основан на NXP/PhilipsMifareUltralight метках (ГОСТ Р ИСО/МЭК 14443A);
- Может быть как только для чтения, так и для чтения/записи;
- Содержит от 96 байт до 2 кбайт памяти;
- Скорость взаимодействия 106 кбит/с;
- Поддержка анти-коллизий;
- Пример: NXP Mifare Ultralight.
Тип 3:
- Основан на метках SonyFeliCa (ГОСТ Р ИСО/МЭК 18092 и JIS-X-6319-4) без поддержки шифрования и аутентификации, которая предоставлена спецификацией FeliCa;
- Может быть либо только для чтения, либо для чтения/записи;
- Скорость взаимодействия 212 или 424 кбит/с;
- Поддержка анти-коллизий;
- Пример: Sony FeliCa.
Тип 4:
- Аналогично типу 1, тип 4 основан на ГОСТ Р ИСО/МЭК 14443A;
- Может быть либо только для чтения, либо для чтения/записи;
- 2, 4 или 8 кбайт памяти;
- Скорость взаимодействия 106, 212 или 424 кбит/с;
- Поддержка анти-коллизий;
- Пример: NXP DESFire, SmartMX-JCOP.
Пятый тип является собственностью NXPSemiconductors и, вероятно, самым распространённым на сегодняшний день MifareClassictag (ГОСТ Р ИСО/МЭК 14443A):
- Память: 192, 768 или 3584 байта;
- Скорость взаимодействия 106 кбит/с;
- Поддержка анти-коллизий;
- Пример: NXP Mifare Classic 1K, Mifare Classic 4K, Mifare Classic Mini.
Читаем ndef-сообщение
Когда телефон на Android считывает NFC-метку, он сначала её обрабатывает и распознает, а затем передаёт данные о ней в соответствующее приложение для последующего создания intent. Если с NFC может работать больше одного приложения, то появится меню выбора приложения. Система распознавания определяется тремя intent, которые перечислены в порядке важности от самой высокой до низкой:
ACTION_NDEF_DISCOVERED
: Этот intent используется для запуска аctivity, если в метке содержится NDEF-сообщение. Он имеет самый высокий приоритет, и система будет запускать его в первую очередь.ACTION_TECH_DISCOVERED
: Если никаких activity для intentACTION_NDEF_DISCOVERED
не зарегистрировано, то система распознавания попробует запустить приложение с этим intent. Также этот intent будет сразу запущен, если найденное NDEF-сообщение не подходит под MIME-тип или URI, или метка совсем не содержит сообщения.ACTION_TAG_DISCOVERED
: Этот intent будет запущен, если два предыдущих intent не сработали.
В общем случае система распознавания работает, как представлено на рисунке ниже.
Когда это возможно, запускается intent ACTION_NDEF_DISCOVERED, потому что он наиболее специфичный из трёх. Более того, с его помощью можно будет запустить ваше приложение.
Если activity запускается из-за NFC intent, то можно получить информацию с отсканированной NFC-метки из этого intent. Intent может содержать следующие дополнительные поля (зависит от типа отсканированной метки):
EXTRA_TAG
(обязательное): объект Tag, описывающий отсканированную метку.EXTRA_NDEF_MESSAGES
(опциональное): Массив NDEF-сообщений, просчитанный с метки. Это дополнительное поле присуще только intentACTION_NDEF_DISCOVERED
.EXTRA_ID
(опциональное): Низкоуровневый идентификатор метки.
Ниже представлен пример, проверяющий intent ACTION_NDEF_DISCOVERED и получающий NDEF-сообщения из дополнительного поля.
Kotlin
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
...
if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) {
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)?.also { rawMessages ->
val messages: List = rawMessages.map { it as NdefMessage }
// Обработка массива сообщений.
...
}
}
}
Java
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
...
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
Parcelable[] rawMessages =
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMessages != null) {
NdefMessage[] messages = new NdefMessage[rawMessages.length];
for (int i = 0; i < rawMessages.length; i ) {
messages[i] = (NdefMessage) rawMessages[i];
}
// Обработка массива сообщений.
...
}
}
}
Также объект Tag можно получить из intent, который будет содержать полезную информацию и позволит перечислить технологии метки:
Kotlin
val tag: Tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
Java
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Вместо заключения
Пожалуй, самое приятное в NFC — то, что эта технология доступна широкому кругу пользователей. Все больше производителей не оставляют свои смартфоны без NFC, поэтому она есть как в устройствах типа
(за $321.99 по коду Mi5SGBS до 31.12) и
, так и во флагманах вроде
. Радует также разнообразие
Что с Apple и ее iPhone 7, спросите вы? Увы, но компания-производитель ограничивает работу чипа NFC в своем смартфоне, и его можно использовать только для платежной системы Apple Pay. Осенью, впрочем, она запустилась в России, так что хоть какой-то плюс.
А как вы используете NFC в повседневной жизни? Поделитесь с нами своим опытом в комментариях.