NFC приложения для Android
Программа была запущена в 2015 году. Работает на всех смартфонах с базой Андроид с внедренной NFC-опции. Основные функции:
- эмулирует банковские карты (Visa, MasterCard);
- регистрирует карты лояльности (дисконты);
- можно оплачивать товары на заправках, в кафе и магазинах.
Преимущества:
- удобный интерфейс;
- запускается и обрабатывает запросы быстро;
- высокая степень безопасности (не работает на перепрошитых смартфонах);
- синхронизируется со смарт-часами.
https://www.youtube.com/watch?v=ytcreators
Недостатков не так много. К минусам можно отнести ограниченное количество заведений, в которых можно расплатиться, и лимитированные суммы к оплате.
Эта программа для оплаты телефоном с помощью NFC действует с 2015 года. Работает на всех устройствах с ОС Android KitKat версии 4.4 и выше, которые оснащены функцией NFC. К середине 2017 года заявлено 15 стран покрытия и 2 в проекте на конец года.
К наиболее популярным функциям относятся:
- эмуляция банковских карт (Visa, MasterCard);
- регистрация карт лояльности, бонусных систем, транспортных;
- осуществление бесконтактных платежей в супермаркетах, магазинах, на заправках, в кафе и ресторанах;
- возможность интернет-платежей (на сайтах, где есть специальная пометка).
Плюсы и минусы
Плюсы | Минусы |
Удобный интерфейс (в том числе и русскоязычный) | Ограниченное количество специальных бесконтактных терминалов |
Быстрый запуск и обработка платежа | Ограниченный список локальных банков-партнёров |
Доступен в магазине Google Play | Лимиты на суммы к оплате |
Отсутствие внутренних комиссий (бесплатная установка) | |
Не поддерживает рутированные или перепрошитые смартфоны (в целях безопасности) | |
Не передаёт на терминал платёжных реквизитов | |
Платёжные ключи генерируются сервером Google и кодируются специальными сервисами токенизации | |
Совместима со смарт-часами |
NFC— это стандарт технологии беспроводного обмена данными ближнего действия, обеспечивающий двустороннее взаимодействие между электронными устройствами. Обмениваться информацией между двумя устройствами, поддерживающими NFC, очень просто: достаточно одного касания. Например, при наличии смартфона, поддерживающего NFC, можно одним касанием приобретать товары, обмениваться визитными карточками, загружать купоны на скидки и т.п. В ближайшем будущем появится еще множество способов применения NFC.
В этой статье описывается технология NFC и модели ее использования на существующем рынке. Также описывается использование NFC в приложениях для платформы Android. И наконец, рассматриваются два примера разработки приложений для считывания и записи NFC.
Android поддерживает NFC в двух пакетах: android.nfc и android.nfc.tech.
NfcManager: Можно использовать устройства Android для управления всеми указанными адаптерами NFC, но, поскольку в большинстве случаев устройства Android поддерживают только один адаптер NFC, вызов NfcManager обычно осуществляется непосредственно с getDefaultAdapter для получения определенного адаптера.
NfcAdapter: Работает в качестве агента NFC (наподобие сетевого адаптера в компьютере), с помощью которого сотовые телефоны получают доступ к оборудованию NFC для запуска обмена данными NFC.
NDEF: Стандарты NFC определяют общий формат данных. Он называется NFC Data Exchange Format (NDEF) и используется для хранения и передачи различной информации — от объектов с типом MIME до сверхкратких документов, передаваемых по радио, например URL-адресов. NdefMessage и NdefRecord являются двумя видами NDEF для форматов данных, определенных форумом NFC. Они используются в нашем образце кода.
Tag: Согласно определению Android, этот класс представляет пассивные объекты, такие как радиометки, карточки и т. п. Когда устройство обнаруживает метку, Android создает объект tag и помещает его в объект Intent, который отправляется соответствующему действию.
Пакет android.nfc.tech также содержит множество важных подклассов. Эти подклассы обеспечиваю доступ к функциям технологии радиометок, в том числе к операциям чтения и записи. В зависимости от типа используемой технологии эти классы разделяются на различные категории, например NfcA, NfcB, NfcF, MifareClassic и пр.
NDEF_DISCOVERED, TECH_DISCOVERED, TAG_DISCOVERED
https://www.youtube.com/watch?v=ytabout
Мы используем здесь тип intent-filter для обработки всех типов от TECH_DISCOVERED до ACTION_TECH_DISCOVERED. Файл nfc_tech_filter.xml используется для всех типов, определенных в файле TAG. Подробные сведения см. в документации Android. На приведенном ниже рисунке показано действие соответствующего процесса при обнаружении телефоном радиометки.
Рисунок 6. Процесс работы при обнаружении метки NFC
NFC: кратко и по делу
NFC стал серьезным конкурентом Bluetooth, так как имеет больше преимуществ. Во-первых, устройства «распознают» друг друга быстрее – всего за 0,5 секунды. Во-вторых, сокращенный радиус действия позволяет обезопасить технологию.
NFC необходим для передачи файлов другому устройству, так как не все пользуются социальными сетями, почтой и приложениями. Еще с помощью данной технологии удобно расплачиваться в магазине без банковской карты.
Архитектура NFC
Технология NFC основана на технологии радиометок RFID с использованием частоты 13,56 МГц. Типовое рабочее расстояние составляет до 10 см, а скорость передачи данных может достигать 424 кбит/с. Основным преимуществом NFC по сравнению с другими технологиями передачи данных является быстрота и простота использования. На следующем рисунке показано сравнение NFC с другими технологиями обмена данными.
Рисунок 1. Сравнение технологий передачи данных ближнего действия.
Технология NFC поддерживает три режима работы: режим эмуляции карт, режим обмена данными и режим считывания и записи, показанные на следующем рисунке.
Рисунок 2. Семейства протоколов NFC
В режиме эмуляции карт NFC работает как бесконтактная смарт-карта с радиометкой RFID и с модулем безопасности, что позволяет пользователям безопасно осуществлять покупки. В режиме обмена данными можно передавать данные между двумя находящимися рядом устройствами, поддерживающими NFC. Можно очень быстро и удобно создавать подключения WiFi* или Bluetooth* с помощью NFC, а затем передавать крупные файлы по подключению WiFi или Bluetooth. В режиме считывания и записи можно использовать устройства, поддерживающие NFC, для считывания меток NFC и запуска различных задач.
Все режимы более подробно описаны ниже.
Приложения NFC: как пользоваться, можно ли передавать приложения
Перед тем, как мы рассмотрим 3 топовые программы NFC, сначала ответим на вопрос, передаются ли приложения данным методом. Да, это возможно. Функция предусмотрена для тех, кто не любит тратить время на поиск программ в Play Market и их установку.
https://www.youtube.com/watch?v=upload
Чтобы передать приложение на другое устройство, нужно поднести смартфон с включенным NFC к девайсу другого пользователя. Система просканирует программу и откроет ссылку на её скачивание в Play Store за 1 секунду.
Теперь насчет оплаты услуг. NFC-чип действует, как банковская карта. Несмотря на то, что с 2017 года оплата данным методом была введена в России и Украине, далеко не все магазины запаслись спецприборами для считывания шифров. Определить, можно ли расплачиваться NFC-методом у кассы очень просто: на терминале будет наклейка с логотипом технологии. Итак, с помощью каких приложений это можно расплатиться через NFC?
Samsung Payр
Этот сервис разработан и запущен в 2015 году специально для пользователей устройств «Самсунг» (по принципу айфонов). Работает на моделях, начиная с Samsung Galaxy Note5.
Программа позволяет использовать такие функции, как:
- регистрация банковских карт;
- загрузка пакетов лояльности (подарочных, накопительных);
- оплата по транспортным картам;
- оплата в магазинах и других физических точках продажи товаров и предоставления услуг;
- оплата онлайн и в отдельных приложениях (со специальными пометками);
Преимущества | Недостатки |
Функция эмуляции магнитной полоски даёт возможность работать с контактными и бесконтактными терминалами | Совместимость только с устройствами от «Самсунг» |
Защита данных тройной аутентификацией: графический ключ, отпечаток пальца, сканирование сетчатки глаза | Лимит на количество (не более 10) |
Участие в подарочно-накопительных акциях Samsung Rewards | Поддерживает не все банки и платёжные системы |
Токенизация (генерирование случайных ключей) через Samsung Knox | Ограниченное количество стран, где внедрена служба |
Программа, как и Android Pay, была выпущена в 2015 году. Работает только на смартфонах марки Samsung. Особенности приложения:
- регистрирует банковские реквизиты и карты лояльности;
- помогает расплатиться безналичным методом быстро и без комиссий.
Основные преимущества:
- благодаря магнитной полоске (эмулированной) работает с контактными и бесконтактными терминалами;
- данные защищаются графическим ключом, отпечатком пальца;
- доступ к участию в акциях магазинов;
- генерирует случайный подбор ключей.
Недочеты: приложение распознают только смартфоны Самсунг. Также далеко не все банки принимают оплату Samsung Pay (уточняйте у своей организации).
Пример: Разработка приложения для чтения и записи информации на базе NFC
Следующий обратный вызов класса переходов показывает функцию считывания. Если класс переходов вещания системы равен NfcAdapter.ACTION_TAG_DISCOVERED, то можно прочитать информацию в радиометке и отобразить ее.
@Override protected void onNewIntent(Intent intent){ if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){ mytag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // get the detected tag Parcelable[] msgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefRecord firstRecord = ((NdefMessage)msgs[0]).getRecords()[0]; byte[] payload = firstRecord.getPayload(); int payloadLength = payload.length; int langLength = payload[0]; int textLength = payloadLength - langLength - 1; byte[] text = new byte[textLength]; System.arraycopy(payload, 1 langLength, text, 0, textLength); Toast.makeText(this, this.getString(R.string.ok_detection) new String(text), Toast.LENGTH_LONG).show(); } }Следующий код показывает функцию записи. Перед определением значения mytag нужно узнать, обнаружена ли радиометка, а затем записать информацию в mytag.
If (mytag==Null){ …… } else{ …… write(message.getText().toString(),mytag); …… } private void write(String text, Tag tag) throws IOException, FormatException { NdefRecord[] records = { createRecord(text) }; NdefMessage message = new NdefMessage(records); // Get an instance of Ndef for the tag. Ndef ndef = Ndef.get(tag); // Enable I/O ndef.connect(); // Write the message ndef.writeNdefMessage(message); // Close the connection ndef.close(); }В зависимости от информации, прочтенной с метки, можно выполнять и другие действия: запускать различные задачи, открывать веб-сайты и т.п.
Мы используем карту Mifare для теста считывания карты и используем тип TAG карты MifareClassic. Карта MifareClassic широко используется в самых различных целях: как удостоверение личности,для оплаты проезда на общественном транспорте и т. п. Память традиционной карты MifareClassic разделяется на 16 секторов, каждый сектор включает 4 блока, а каждый блок может содержать 16 байт данных.
Последний блок в каждой области называется трейлером, он используется главным образом для сохранения локального ключа блока для чтения и записи данных. Он содержит два ключа, A и B, длиной по 6 байт каждый, значение по умолчанию обычно равно FF или 0 для всего ключа согласно определению MifareClassic.KEY_DEFAULT.
https://www.youtube.com/watch?v=ytpress
При записи на карту Mifare нужно сначала получить правильное значение ключа (для защиты). Перед тем как пользователь получит возможность чтения и записи данных в эту область, нужно пройти проверку подлинности.