Многое было сказано о форматах самих qr-кодов, но не менее важно то, что кодирует сам штрих-код. Как правило, qr-коды кодируют какой-то текст, однако этот текст может содержать различные команды для сканера, которые, например, сообщают ему, что закодированный текст это ссылка и что ее необходимо открыть в браузере.
В qr-коды можно закодировать самый различный текст с указаниями для сканера, как этот текст интерпретировать и какую информацию показать пользователю. Например, в qr-код можно закодировать контактную информацию с командой добавить ее в контакты телефона. Однако, чтобы каждый сканер мог понять, какой тип информации и какие команды зашифрованы, нужны стандарты.
В этой статье будут рассмотрены некоторые из этих стандартов и описаны возможные типы данных, которые можно спрятать в qr-код.
Все примеры были протестированы с помощью сканера в IOS 14 и the-qrcode-generator.com
Ссылка
Наиболее распространенным применение qr-кода это кодирование
ссылок. Для этого просто закодируйте текст ссылки в qr-код.
Добавьте протокол https://
в начало ссылки, чтобы
убедиться, что сканер распознает текст именно как ссылку.
Пример qr-кода с ссылкой
В дикой природе встречается префикс urlto:
.
Кодируемый текст тогда выглядит, как urlto:habr.com
.
Однако данный формат поддерживается не всеми современными сканерами
(например, не работает во встроенном в IOS 14)
Адрес электронной почты
Чтобы закодировать адрес электронной почты, например
info@habr.com
. Нужно дополнить адрес до ссылки (
подробнее про URI scheme ), которая будет распознана, как
команда открыть приложение почты:
mailto:info@habr.com.
Добавляя параметры к ссылке,
можно указать тему письма, его содержание и многое другое. Стандарт
mailto
RFC
6068 является
частью интернет стандартов IETF.
Поэкспериментировав, можно понять, что умный сканер в IOS 14
распознает просто закодированный email и предлагает написать на
него письмо. Однако, чтобы указать другие параметры, уже
потребуется mailto:
префикс.
# Только адрес получателя (распознается как почта в сканере 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.
Важно заметить, что любые небуквенные символы в ссылках нужно переводить в специальный формат.
Номер телефона
Чтобы закодировать номер телефона, нужно использовать
tel
url-схему. Чтобы гарантировать правильность
распознавания номера, лучше указывать полную версию номер
(например, код страны + код города + номер).
Как и с адресом электронной почты, просто закодированный номер телефона распознается в сканере IOS 14.
# Только номер+78005553535# Tel url-схемаtel:+78005553535
Контактная информация
Для передачи контакта существует несколько форматов:
-
Этот формат похож на предыдущие, но уже не является ссылкой.
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;;
Синтаксис похож на предыдущий формат
-
Большинство устройств поддерживают этот формат. Однако у него существует несколько различных версий, отличающихся набором допустимых параметров.
BEGIN:VCARDN:Smith;John;TEL;TYPE=work,VOICE:(111) 555-1212TEL;TYPE=home,VOICE:(404) 386-1017TEL;TYPE=fax:(866) 408-1212EMAIL:smith.j@smithdesigns.comORG:Smith Designs LLCTITLE:Lead DesignerADR;TYPE=WORK,PREF:;;151 Moore Avenue;Grand Rapids;MI;49503;United States of AmericaURL:https://www.smithdesigns.comVERSION:3.0END:VCARD
Некоторые из доступных параметров описаны в таблице ниже.
Ключ
Тип
Description
Format
BEGIN
Обязательный
Все vCards должный начинаться с этого параметра
BEGIN:VCARD
N
Опциональный
Полное имя
N:Smith;John;
TEL;TYPE
Опциональный
Номера телефонов и их типы
TEL;TYPE=work,VOICE:(111) 555-1212 TEL;TYPE=home,VOICE:(404) 386-1017 TEL;TYPE=fax:(866) 408-1212
EMAIL
Опциональный
Адрес электронной почты
EMAIL:smith.j@smithdesigns.com
ORG
Опциональный
Название компании
ORG:Smith Designs LLC
TITLE
Опциональный
Должность
TITLE:Lead Designer
ADR; TYPE
Опциональный
Домашний и рабочий адреса в формате: Street; City; State; Postal Code; Country
ADR;TYPE=WORK,PREF:;;151 Moore Avenue;Grand Rapids;MI;49503;United States of America
URL
Опциональный
Веб-сайт
URL:https://www.smithdesigns.com
VERSION
Обязательный
Версия vCard
VERSION:3.0
END
Обязательный
Закрывающий параметр
END:VCARD
SMS
Для отправки смс существует формат
со url-схемой sms:
, похожей на отправку email.
# Отправить смс на номерsms:+15105550101# Отправить определенный текстsmsto:+15105550101:hello there
Формат smsto:
является аналогом sms:
,
но только с помощью него мне удалось передать текст сообщения
(все тесты проводились на IOS 14).
FaceTime
В документации IOS есть информация о url-схемах для доступа к звонкам FaceTime
Пример qr-кода с вывозом FaceTime
# FaceTime видео-звонокfacetime:+18005551212facetime:me@icloud.com# FaceTime аудио-звонокfacetime-audio:+18005551212facetime-audio:me@icloud.com
Карты
Для передачи точки на карте используется geo:
url
схема. Через запятую перечисляются широта, долгота и опционально
высота над уровнем моря (в метрах).
# Координатыgeo:40.71872,-73.98905# Координаты + высотаgeo:40.71872,-73.98905,100
Однако более современным способом являются простые ссылки, генерируемые самим приложением Карты. В этом случае доступно больше параметров.
# Apple mapshttps://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 mapshttps://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
События в календаре
iCalendar формат используется для хранения календарей. Компонент vEvents отвечает за хранения событий, он и используется для кодирования в qr-код.
BEGIN:VEVENTUID:19970901T130000Z-123401@example.comDTSTAMP:19970901T130000ZDTSTART:19970903T163000ZDTEND:19970903T190000ZSUMMARY:Annual Employee ReviewCLASS:PRIVATECATEGORIES:BUSINESS,HUMAN RESOURCESEND:VEVENT
WiFi сети
После сканирование такого qr-кода устройство (Android, iOS 11+) предложит подключиться к сети.
Пример qr-кода для подключения к WiFiWIFI:T:WPA;S:mynetwork;P:mypass;;
Другие параметры приведены в таблице ниже
Ключ |
Пример |
Описание |
---|---|---|
|
|
Тип аутентификации; может быть |
|
|
Название сети SSID. Обязательный параметр. Если строка может быть интерпретирована как шестнадцатеричное число, нужно заключить ее в двойные кавычки. |
|
|
Пароль. Параметр игнорируется, если |
|
|
Необязательный параметр. Значение |
|
|
(WPA2-EAP) EAP method, например |
|
|
(WPA2-EAP) Anonymous identity |
|
|
(WPA2-EAP) Identity |
|
|
(WPA2-EAP) Phase 2 method, например |
Недавно в рамках статьи про создания телеграм ботов, я сделал бота для генерации WiFi qr-кодов. Можете воспользоваться им, чтобы без труда создать WiFi qr-код и больше не мучиться с перепечатыванием длинных паролей.
Telegram
У телеграма есть своя 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-коды.
Источники
-
RFC 6068 The
mailto
URI Scheme -
RFC 5724 URI Scheme for Global System for Mobile Communications (GSM) & Short Message Service (SMS)
Облачные серверы от Маклауд быстрые и безопасные.Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!