Структура карты

Что же представляет собой карта с точки зрения разработчика? Карта – это архив с расширением .pkpass. Он содержит в себе все данные, необходиимые для отображения и работы карты. Содержимое архива – в таблице ниже.

Файл Назначение
background.png Фоновая картинка для карты.
footer.png Картинка рядом со штрихкодом
icon.png Иконка для уведомлений и писем
logo.png Логотип карточки. Отображается слева сверху
manifest.json Реестр всех включанымх файлов
signature PKCS7 подпись
pass.json Внешний вид и информация на карте
strip.png Картинка, находящаяся сзади основного описания карточки
thumbnail.png Дополнительная картинка (уточнить)

Существуют следующие типы карт:

  • Посадочный билет: на самолет или поезд. Обычно купон работает на одну поездку;
  • Купон: для купонов и специальных предложений;
  • Билет на событие: может работать как для одного события, так и для целого сезона;
  • Скидочная карта: карты лояльности, скидочные или подарочные карты;
  • Карта общего вида: если ничего из вышеперечисленного не подходит под ваш случай: например, карта для поездок на метро или пропуск в спортзал.

Рассмотрим схематично внешний вид разных карт. Картинки лучше называть так, как это указано в таблице выше.

Посадочный билет

Купон

Билет на событие

Общая карта

Скидочная карта

Создание карты. Часть 2

Итак, картинки готовы, pass.json сформирован, осталось собрать все это вместе. Для этого заполним manifest.json (см. таблицу 1), куда необходимо включить все картинки и pass.json. Получается примерно так:

. . . . . . «pass.json» = 303c753abc39aa732ec74643d6db28348fe8a823; «strip.png» = 736d01f84cb73d06e8a9932e43076d68f19461ff; «strip@2x.png» = 468fa7bc93e6b55342b56fda09bdce7c829d7d46; . . . . . .

С этого момента менять ничего не нужно, поскольку SHA будет некорректным, в случае изменений необходимо сгенерировать SHA заново.

Далее нужно создать Pass Type ID в кабинете разработчика и сделать для него сертификат. Процедура должна быть более-менее знакомая, если ранее вы создавали, например, Provisioning профили.

Далее заходим в ключницу (Keychain) и экспортируем оттуда Apple Worldwide Developer Relation Certificate (WWDR) как .pem.

Оттуда же экспортируем созданный Pass Type ID как .p12. На этом этапе ключница попросит вас ввести пароль для сертификата. При этом пароль вводить необязательно.
Обратите внимание, что все дальнейшие действия надо производить в одной папке, где уже должны лежать manifest.json, pass.json и картинки.

Теперь необходимо сгенерировать подпись, которой будем подписывать архив. Для начала экспортируем Pass Type ID и ключ к нему как .pem.

openssl pkcs12 -in certificate.p12 -clcerts -nokeys -out passcertificate.pem -passin pass: your_password

и

openssl pkcs12 -in certificates.p12 -nocerts -out passkey.pem -passin pass: -passout pass:new_password

Теперь мы готовы к генерации подписи. Сделаем это командой:

openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:пароль_из_предыдущей_команды

Итак, у нас все готово, осталось только собрать архив, делаем это командой:

zip -r nameOfPass.pkpass manifest.json pass.json signature logo.png logo@2x.png logo@3x.png icon.png icon@2x.png icon@3x.png

Обращаю внимание, что тут должны быть перечислены все файлы, в которые вы хотите включить архив данных для карты(.pkpass).
В итоге мы получим .pkpass файл, который можно открывать на компьютере. Мы увидим превью карты, внешний вид которой может отличаться от вида на телефоне.
Все это можно сделать чуть проще. Apple предоставляет утилиту signpass (Apple Wallet sample meterials), которая берет на себя все подсчеты SHA (файл manifest.json можно не делать самостоятельно) и работу по созданию подписей. Чтобы ей воспользоваться, нужно собрать проект и поместить файл signpass в папку со всеми необходимыми ресурсами.

В целом структура должна выглядеть примерно так:

Далее выполняем команду:

./signpass -p wallet

Wallet — это название папки, в которой лежат все ресурсы. На выходе получаем файл wallet.pkpass. Его содержимое можно посмотреть, разархивировав wallet.pkpass.

unzip wallet.pkpass

Не исключено, что создание pkpass будет вынесено на бэкенд, в таком случае надо будет передать разработчикам WWDR, сертификат для Pass Type ID в виде .p12 и пароль от него.

Тестирование

Apple предоставляет примеры pkpass для разных типов, можно ориентироваться на них.
Apple Wallet samples
Чтобы увидеть то, как выглядит карта, можно, добавить pkpass в проект (см. «Добавление карты»). Процесс добавления/удаления уже рассмотрен выше, осталось только напомнить, что приложение не будет видеть уже добавленные карты, если карта для Wallet создавалась на одном аккаунте разработчика, а сама разработка велась с другого аккаунта (актуально для аутсорс-компаний). При этом добавлять карты можно без проблем.
Проверить, корректно ли закодирована информация в штрихкоде, можно с помощью любого сканера QR-кодов. И точно необходимо проверить корректность работы с настоящим сканером.

В статье был рассмотрен процесс создания и дизайна карты, а также процесс интеграции c приложением и проблем, которые могут возникнуть. Я намерено не касался вопросов интеграции с веб-сервисами и обновления карт, и надеюсь сделать это в следующей статье.

>Используемые материалы:

Отдельное спасибо mehdzor за аккаунт разработчика для тестов.

Что такое Apple Wallet

Apple Wallet – это предустановленное приложение, доступное на всех устройствах Apple iPhone, iPad и iPod Touch. Приложение позволяет оцифровать пластиковые карты и хранить их все у себя на устройстве. Вы можете оцифровать банковские карты (кредитные и дебетовые), карты на скидку, карты участника в клубах и другие пластиковые карты.

Приложение позволяет добавить не только карты, но и некоторые другие данные. И в этом нет ничего удивительного, если вспомнить, что изначально приложение называлось «Passbook». Например, вы можете добавить в приложение билеты на предстоящие перелеты.

Если вы покупаете билеты через другие приложения, а они поддерживают автоматический обмен данных с Apple Wallet, то билеты автоматически появятся в вашем Apple Wallet. В России автоматическую загрузку авиабилетов поддерживает S7 Airlines, Aeroflot и некоторые другие компании.

Также вы можете загрузить билеты со своей почты. Вы можете загрузить в приложение билеты на Аэроэкспресс, а также ваш посадочный талон.

Apple Wallet – универсальное приложение, чей функционал лишь растет с каждым днем, недавно появилась возможность добавлять бронирования с сервиса AirBnB. Но будьте аккуратны, в некоторых случаях вам может потребоваться настоящая карточка или же бумажный билет. Хорошо, что после загрузки карты или билета приложение отображает их данные даже без доступа к сети Интернет.

Если у вас есть iTunes Pass, то вы можете добавить свой абонемент в приложение Wallet. Хотя в России нелегко найти токи пополнения абонементов, но сама функция работает прекрасно, а в связке с Wallet, еще и очень удобно.

Появление технологии Apple Pay принесло в Apple Wallet еще одну функцию. Если ваше устройство поддерживает Apple Pay, то вы можете добавить свою карту на телефон через приложение Wallet. В результате вы сможете расплачиваться своим смартфоном также, как обычной картой.

Как настроить Apple Wallet на iPhone

Приложение Wallet изначально предустановлено на всех современных смартфонах iPhone и плеерах iPod Touch, но приложения Wallet для iPad не существует. У вас есть несколько способов, как настроить приложение на вашем смартфоне. Вы можете добавлять данные следующим образом:

  • Сканированием штрихкода карты;
  • Через веб-версию;
  • Из своей почты или сообщений;
  • С помощью сторонних программ;

Если вы хотите добавить скидочную карту, которую вы получили в России, то у вас могут возникнуть проблемы. Мы протестировали несколько карт популярных парфюмерных магазинов, но в итоге ни одна карта не добавилась в программу. При сканировании штрих-кода карты выдается следующая ошибка:

Вы можете обратиться к той компании/магазину, кто выдал вам карту, с вопросом – поддерживается ли карта программой Wallet. К сожалению, российский бизнес упорно не замечает столь удобное приложение. Большинство скидочных карт не получится добавить, но ситуация постепенно меняется в лучшую сторону. Сегодня в России с приложением работают карточки «РОЛЬФ Премиум», «АВТОДОР-Платные дороги», «Адамас» и некоторые другие.

Если вам пришли билеты на почту, то вы можете добавить их в Wallet одним кликом. Если билеты пришли, но почтовый сервис не предлагает добавить билеты в Wallet, то это значит, что приложение не поддерживает данные билеты. Также вы можете добавить карты и билеты из других приложений. Например, если вы купите авиабилеты в официальном приложении Аэрофлота, то после оплаты билеты автоматически отобразятся в вашем электронном кошельке.

Вы можете редактировать все добавленные карты и билеты. Для этого вам нужно выбрать значок «i» напротив необходимой карты или билета. Далее у вас откроется окно, где будут отображены все доступные настройки.

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

Тем, кто хочет изменить порядок карт/билетов в приложении, достаточно нажать на нужную карту и удерживая палец перетащить карту в нужное место. Если у вас несколько устройств, то вы можете синхронизировать данные между ними при помощи iCloud.

Рубрики: IT

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *