Возможности QR-кодов

image

Многое было сказано о форматах самих qr-кодов, но не менее важно то, что кодирует сам штрих-код. Как правило, qr-коды кодируют какой-то текст, однако этот текст может содержать различные команды для сканера, которые, например, сообщают ему, что закодированный текст — это ссылка и что ее необходимо открыть в браузере.

В qr-коды можно закодировать самый различный текст с указаниями для сканера, как этот текст интерпретировать и какую информацию показать пользователю. Например, в qr-код можно закодировать контактную информацию с командой добавить ее в контакты телефона. Однако, чтобы каждый сканер мог понять, какой тип информации и какие команды зашифрованы, нужны стандарты.

В этой статье будут рассмотрены некоторые из этих стандартов и описаны возможные типы данных, которые можно спрятать в qr-код.


Все примеры были протестированы с помощью сканера в IOS 14 и  the-qrcode-generator.com


Ссылка

Наиболее распространенным применение qr-кода — это кодирование ссылок. Для этого просто закодируйте текст ссылки в qr-код. Добавьте протокол https:// в начало ссылки, чтобы убедиться, что сканер распознает текст именно как ссылку.


Пример qr-кода с ссылкой Пример qr-кода с ссылкой

В дикой природе встречается префикс urlto:. Кодируемый текст тогда выглядит, как urlto:habr.com. Однако данный формат поддерживается не всеми современными сканерами (например, не работает во встроенном в IOS 14)


Адрес электронной почты

Чтобы закодировать адрес электронной почты, например info@habr.com. Нужно дополнить адрес до ссылки (подробнее про URI scheme), которая будет распознана, как команда открыть приложение почты: mailto:info@habr.com. Добавляя параметры к ссылке, можно указать тему письма, его содержание и многое другое. Стандарт mailto RFC 6068 является частью интернет стандартов IETF.

Поэкспериментировав, можно понять, что умный сканер в IOS 14 распознает просто закодированный email и предлагает написать на него письмо. Однако, чтобы указать другие параметры, уже потребуется mailto: префикс.


22380df1f0c701b504153dc6edeb7397.png
# Только адрес получателя (распознается как почта в сканере IOS 14)
someone@habr.com

# С использованием mailto схемы
mailto:someone@habr.com

# Адрес и тема письма
mailto:someone@habr.com?subject=Hello%20from%20Habr

# Получатель, сс: копия, bcc: скрытая копия и тема письма
mailto:someone@habr.com?cc=someoneelse@habr.com,another@habr.com,me@habr.com&bcc=lastperson@habr.com&subject=Big%20News

# Адрес, CC, BCC, тема и текст письма
mailto:someone@habr.com?cc=someoneelse@habr.com,another@habr.com,me@habr.com&bcc=lastperson@habr.com&subject=Big%20News&body=QR-code%20are%20cool.

Важно заметить, что любые небуквенные символы в ссылках нужно переводить в специальный формат.


Номер телефона


401abc4f9d7f600276ef67c7443f56d0.png

Чтобы закодировать номер телефона, нужно использовать tel url-схему. Чтобы гарантировать правильность распознавания номера, лучше указывать полную версию номер (например, код страны + код города + номер).

Как и с адресом электронной почты, просто закодированный номер телефона распознается в сканере IOS 14.

# Только номер
+78005553535

# Tel url-схема
tel:+78005553535
                                            

Контактная информация


e80576963a90178cef219b595213c115.png

Для передачи контакта существует несколько форматов:


  • NTT DoCoMo MECARD

    Этот формат похож на предыдущие, но уже не является ссылкой.

    MECARD:N:Owen,Sean;ADR:76 9th Avenue, 4th Floor, New York, NY 10011;TEL:12125551212;EMAIL:email@example.com;;
                                                        

    Вначале идет префикс с указанием формата MECARD, после двоеточие через точку с запятой перечисляются параметры в формате {ключ}:{значение}. В конец добавляется еще одна точка с запятой.


  • BIZCARD (документации по этому стандарту я не смог найти)

    BIZCARD:N:Sean;X:Owen;T:Software Engineer;C:Google;A:76 9th Avenue, New York, NY 10011;B:+12125551212;E:email@google.com;;

    Синтаксис похож на предыдущий формат

  •   vCard

    Большинство устройств поддерживают этот формат. Однако у него существует несколько различных версий, отличающихся набором допустимых параметров.

    BEGIN:VCARD
    N:Smith;John;
    TEL;TYPE=work,VOICE:(111) 555-1212
    TEL;TYPE=home,VOICE:(404) 386-1017
    TEL;TYPE=fax:(866) 408-1212
    EMAIL:smith.j@smithdesigns.com
    ORG:Smith Designs LLC
    TITLE:Lead Designer
    ADR;TYPE=WORK,PREF:;;151 Moore Avenue;Grand Rapids;MI;49503;United States of America
    URL:https://www.smithdesigns.com
    VERSION:3.0
    END:VCARD
                                                        

    Некоторые из доступных параметров описаны в таблице ниже.



SMS


2b665c621a608826330e6f8fcf500cd4.png

Для отправки смс существует формат со url-схемой sms:, похожей на отправку email.

# Отправить смс на номер
sms:+15105550101

# Отправить определенный текст
smsto:+15105550101:hello there
                                            

Формат smsto: является аналогом sms:, но только с помощью него мне удалось передать текст сообщения (все тесты проводились на IOS 14).


FaceTime

В документации IOS есть информация о url-схемах для доступа к звонкам FaceTime


Пример qr-кода с вывозом FaceTime Пример qr-кода с вывозом FaceTime
# FaceTime видео-звонок
facetime:+18005551212
facetime:me@icloud.com

# FaceTime аудио-звонок
facetime-audio:+18005551212
facetime-audio:me@icloud.com
                                           

Карты


6963f0ca416b0672f420aea4ab9ce500.png

Для передачи точки на карте используется geo: url — схема. Через запятую перечисляются широта, долгота и опционально высота над уровнем моря (в метрах).

# Координаты
geo:40.71872,-73.98905

# Координаты + высота
geo:40.71872,-73.98905,100

Однако более современным способом являются простые ссылки, генерируемые самим приложением Карты. В этом случае доступно больше параметров.

# Apple maps
https://maps.apple.com/place?address=400%20Broad%20St,%20Seattle,%20WA%20%2098109,%20United%20States&auid=17457489312301189071&ll=47.620521,-122.349293&lsp=9902&q=Space%20Needle

# Google maps
https://maps.google.com/?address=400%20Broad%20St,%20Seattle,%20WA%20%2098109,%20United%20States&auid=17457489312301189071&ll=47.620521,-122.349293&lsp=9902&q=Space%20Needle

События в календаре


7c98bfa6840818ddd437b15c9e43b978.png

iCalendar формат используется для хранения календарей. Компонент vEvents отвечает за хранения событий, он и используется для кодирования в qr-код.

BEGIN:VEVENT
UID:19970901T130000Z-123401@example.com
DTSTAMP:19970901T130000Z
DTSTART:19970903T163000Z
DTEND:19970903T190000Z
SUMMARY:Annual Employee Review
CLASS:PRIVATE
CATEGORIES:BUSINESS,HUMAN RESOURCES
END:VEVENT
                                            

WiFi сети

После сканирование такого qr-кода устройство (Android, iOS 11+) предложит подключиться к сети.

Пример qr-кода для подключения к WiFi Пример qr-кода для подключения к WiFi
WIFI:T:WPA;S:mynetwork;P:mypass;;
                                            

Другие параметры приведены в таблице ниже


Недавно в рамках статьи про создания телеграм ботов, я сделал бота для генерации WiFi qr-кодов. Можете воспользоваться им, чтобы без труда создать WiFi qr-код и больше не мучиться с перепечатыванием длинных паролей.


Telegram


4327a3e2a387d558d4b4a9b7c38c8fab.png

У телеграма есть своя url-схема, которая позволяет делиться ссылками.

# Простая ссылка
https://t.me/share/url?url={url}&text={text}
https://telegram.me/share/url?url={url}&text={text}

# Команда для приложения
tg://msg_url?url={url}&text={text}
                                            

Подробнее про возможности «поделиться через телеграм» можно почитать в документации.


Выводы

Многие приложения имеют url-схемы, которые дают возможность обращаться к ним по ссылкам. Эти ссылки, в свою очередь, можно спрятать в qr-коды. Однако для некоторых типов данных были разработаны собственные текстовые форматы, которые подходят для сохранения в qr-коды.


Источники


Облачные серверы от Маклауд быстрые и безопасные.Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации! et1aypandyuamqprsz3m2ntm4ky.png

© Habrahabr.ru