Использование бесконтактных пропусков и студенческих билетов
Откройте программу Apple Watch на iPhone.
Выберите «Мои часы» {amp}gt; «Wallet и Apple Pay».
Если у Вас есть бесконтактный пропуск или студенческий билет, Вы можете использовать Apple Watch для предъявления пропуска на пункте, оборудованном считывающим устройством.
Если у Вас бесконтактный пропуск и появилось уведомление. Коснитесь уведомления. Если уведомление не появилось, дважды нажмите боковую кнопку и подержите Apple Watch в нескольких сантиметрах от считывающего устройства, повернув дисплей в его сторону.
Если у Вас студенческий билет. Если бесконтактные студенческие билеты поддерживаются, подержите Apple Watch в нескольких сантиметрах от считывающего устройства, повернув дисплей в его сторону, пока Apple Watch не завибрируют. Дважды нажимать боковую кнопку не нужно.
Дополнительную информацию о бесконтактных пропусках и студенческих билетах см. в Руководстве пользователя iPhone.
Обязательные поля
Ключ в JSON | Тип данных | Описание |
---|---|---|
description | String. Локализуемое | Краткое описание карты. Локализуемое. |
formatVersion | Int | Версия формата файла. Значение должно быть 1. |
organizationName | String. Локализуемое | Название организации, которая выдает карты. |
passTypeIdentifier | String | Pass Type ID и кабинете разработчика. |
serialNumber | String | Серийный номер отдельной карты |
teamIdentifier | String | Team ID команды разработчика |
Добавление карты
Чтобы добавить билет или пропуск, выполните одно из следующих действий:
Следуйте инструкциям в письме, которое прислала Вам компания, выдавшая билет или пропуск.
Откройте программу этой компании.
Коснитесь «Добавить» в уведомлении.
guard let passPath = Bundle.main.path(forResource: "wallet", ofType: "pkpass") else { return }
let error: ErrorPointer = ErrorPointer(nilLiteral: ())
guard let passData = NSData(contentsOfFile: passPath) else { return }
let pass = PKPass(data: passData as Data, error: error)
let passLibrary = PKPassLibrary()
passLibrary.addPasses([pass]) { (status) in
print(passLibrary.containsPass(pass))
}
Однако, опять же, чаще .pkpass файл надо будет скачивать с вашего сервера.Стоит отметить, что PassKit выдает довольно читаемые ошибки, поэтому можно легко понять, что именно было сделано не так.
Использование бесконтактных пропусков и студенческих билетов
На Apple Watch можно использовать самые разные билеты.
Если на экране Apple Watch появилось уведомление с информацией о билете. Коснитесь уведомления, чтобы открыть билет. Возможно, нужно будет прокрутить экран, чтобы найти штрихкод.
Если у Вас билет со штрихкодом. Откройте программу Wallet на Apple Watch, выберите билет и предъявите штрихкод для сканирования.
Ключи стиля
Ключ в JSON | Тип данных | Описание |
---|---|---|
primaryFields | [JSON] | Основная информация о карте. |
secondaryFields | [JSON] | Второстепенная информация. |
auxiliaryFields | [JSON] | Поля для дополнительной информации. Опциональное |
headerFields | [JSON] | Заголовок карты. Отображается даже в том случае, когда карты видны списком. |
auxiliaryFields | [JSON] | Основная информация о карте. |
transitType | String | Тип транспорта для карт-билетов. Может принимать следующие значения: PKTransitTypeAir, PKTransitTypeBoat, PKTransitTypeBu`, PKTransitTypeGeneric, `PKTransitTypeTrain`. |
backFields | [JSON] | Массив полей, отвечающий за обратную сторону карты |
"key" : "value1",
"label" : "value2",
"value" : "value3"
Значение по ключу value может быть как числовым, так и строковым. Однако currencyCode вместе со строковым значением использовать не получится. Что касается auxiliaryFields и secondaryFields, их может быть несколько, и стоит следить за длиной строк, которые в них используются.
Ключи визуального оформления
Ключ в JSON | Тип данных | Описание |
---|---|---|
barcodes | [JSON] | Информация для баркода (см. ниже). |
backgroundColor | color as string | Цвет фона.(#fa32e4) |
foregroundColor | color as string | Цвет лейблов со значениями |
groupingIdentifier | String | Опционально для билетов на события и билетов на транспорт. Карты с одинаковым стилем ― passTypeIdentifier и groupingIdentifier ― будут группироваться |
labelColor | color as string | Текст лейблов с названиями полей |
logoText | Localizable string | Текст, отображаемый рядом с логотипом |
Получение информации о добавленных картах
Чтобы получить информацию о картах, имеющихся в Wallet и относящихся к вашему приложению, необходимо обратиться к объекту PKPassLibrary.
let passLibrary = PKPassLibrary()
let passes = passLibrary.passes()
Таким образом, можно понять, добавлена карта или нет, а также обновить интерфейс. Кроме того, через PKPassLibrary карты можно обновлять и удалять. Обновлять карты можно и через веб-сервисы, но в этой статье мы не будем рассматривать такой вариант.
Откройте программу Wallet на iPhone и перетяните билеты, чтобы расставить их в нужном порядке. Билеты отображаются в новом порядке и на Apple Watch.
Откройте программу Apple Watch на iPhone.
Коснитесь «Мои часы» {amp}gt; «Wallet и Apple Pay», затем коснитесь «Повтор iPhone» под уведомлениями.
При изменении билета — например, при смене выхода на посадку для Вашего посадочного талона — билет будет обновлен и на Apple Watch.
Баркод
Самая важная часть карты. В него зашивают идентификационный номер карты (например, номер физической карты или номер билета). Важно чтобы сканер или любой другой инструмент умели считывать коды в нужной кодировке.
Ключ в JSON | Тип данных | Описание |
---|---|---|
altText | String | Опциональный текст, отображаемый рядом с баркодом в том случае, если баркод не считывается. |
format | String | Формат баркода. Может принимать значения: PKBarcodeFormatQR, PKBarcodeFormatPDF417, PKBarcodeFormatAztec, PKBarcodeFormatCode128 |
message | String | Код или номер карты, зашифрованный в баркод. |
messageEncoding | String | Кодировка сообщения. Обычно iso-8859-1 |
Локация
Эти ключи отвечают за локацию, в пределах которой карта может быть использована.
Ключ в JSON | Тип данных | Описание |
---|---|---|
altiture | String | Опциональный текст, отображаемый рядом с баркодом в том случае, если баркод не считывается. |
latitude | Долгота | Широта |
longtitude | Double | Широта |
relevantText | String | Опциональный текст, который отображается на экране блокировки в тот момент, когда пользователь входит в радиус действия карты. |
Удаление использованных билетов
Откройте программу Wallet на iPhone.
Коснитесь билета, затем коснитесь кнопки .
Коснитесь «Удалить карту».
Билет будет удален с iPhone и Apple Watch.
Структура карты
Что же представляет собой карта с точки зрения разработчика? Карта – это архив с расширением .pkpass. Он содержит в себе все данные, необходиимые для отображения и работы карты. Содержимое архива – в таблице ниже.
Файл | Назначение |
---|---|
background.png | Фоновая картинка для карты. |
footer.png | Картинка рядом со штрихкодом |
icon.png | Иконка для уведомлений и писем |
logo.png | Логотип карточки. Отображается слева сверху |
manifest.json | Реестр всех включанымх файлов |
signature | PKCS7 подпись |
pass.json | Внешний вид и информация на карте |
strip.png | Картинка, находящаяся сзади основного описания карточки |
thumbnail.png | Дополнительная картинка (уточнить) |
Существуют следующие типы карт:
- Посадочный билет: на самолет или поезд. Обычно купон работает на одну поездку;
- Купон: для купонов и специальных предложений;
- Билет на событие: может работать как для одного события, так и для целого сезона;
- Скидочная карта: карты лояльности, скидочные или подарочные карты;
- Карта общего вида: если ничего из вышеперечисленного не подходит под ваш случай: например, карта для поездок на метро или пропуск в спортзал.
Рассмотрим схематично внешний вид разных карт. Картинки лучше называть так, как это указано в таблице выше.