• coupon — сообщает Passbook, что талон представляет собой скидочный купон. Например, такой талон может быть выдан в магазине, и пользователь, предъявив его, имеет право на скидку при приобретении тех или иных товаров;
• storeCard — говорит Passbook, что талон представляет собой дисконтную или клубную карту;
• boardingPass — сообщает Passbook, что талон представляет собой проездной билет на поезд или автобус либо посадочный талон на самолет;
• generic — талон, не относящийся ни к одной из вышеупомянутых категорий.
Каждый из приведенных ключей в файле pass.json будет содержать словарь значений (которые, в свою очередь, являются ключами со значениями). Эти ключи будут конкретно определять, для чего применяется талон и какие значения он содержит.
Когда вы внесете талон одного из этих типов в качестве ключа в файл pass.json, нужно будет указать словарные ключи и значения для данного талона (мы уже говорили, что все талоны вышеперечисленных типов являются словарями). Каждый словарь такого типа может содержать следующие ключи:
• transitType — этот ключ требуется только в словаре типа boardingPass. В других случаях его можно просто игнорировать. В этом словаре могут содержаться следующие значения: PKTransitTypeAir, PKTransitTypeBus, PKTransitTypeTrain, PKTransitTypeBoat и PKTransitTypeGeneric. Талоны с такими значениями соответствуют билетам на самолет, автобус, поезд, водный транспорт. Последнее значение является универсальным;
• headerFields — часть информации, расположенная в верхней части талона и доступная для просмотра в Passbook на устройстве. Старайтесь не перегружать этот заголовок информацией, поскольку эти значения всегда будут видны пользователю, даже если все талоны сложены «в стопку» в интерфейсе приложения Passbook;
• primaryFields — самая важная информация о вашем талоне, которая будет отображаться на его лицевой стороне. Например, если мы говорим о посадочном талоне на самолет, то здесь вы найдете номер терминала, номер места и название авиакомпании. В другом талоне здесь может присутствовать иной набор значений;
• secondaryFields — второстепенная информация, также отображаемая на лицевой стороне талона. Например, в посадочном талоне на самолет к этой категории можно отнести время посадки, дату посадки и тип воздушного судна;
• auxiliaryFields — наименее важная информация, отображаемая на лицевой стороне талона. В посадочном талоне на самолет к такой информации можно отнести предположительное время прибытия;
• backFields — информация, отображаемая на оборотной стороне талона.
В качестве значений все вышеупомянутые ключи получают словари, а эти словари, в свою очередь, могут содержать следующие ключи:
• label — надпись-название поля, которое должно отображаться на талоне (с лицевой или оборотной стороны в зависимости от того, к какому ключу добавлен этот словарь);
• key — ключ, которым ваше приложение может воспользоваться для считывания значения этого поля;
• value — значение этого поля;
• textAlignment — опциональный ключ, который может описывать визуальное выравнивание надписи на талоне. Для этого поля можно указать любое из следующих значений:
• PKTextAlignmentRight;
• PKTextAlignmentCenter;
• PKTextAlignmentLeft;
• PKTextAlignmentNatural;
• PKTextAlignmentJustified.
Да уж, многовато ключей и значений приходится запоминать. Но не волнуйтесь, со временем к этому привыкаешь. Итак, создадим простой файл pass.json. Сначала сформулируем требования, а потом приступим к написанию самого файла талона. Как раз применим на практике ту теорию, которую выучили раньше. Далее изложена суть примера.
• Создаваемый талон будет соответствовать железнодорожному билету.
• Поезд выходит из английского города Хоув в 7:37. Состав отбывает от платформы 2.
• Поезд прибывает на вокзал Лондон-Бридж в Лондоне в 8:41 (платформа 13).
• Билет предоставляет право проезда в поездах придуманной нами компании «О’Рейли Рэйлуэйз».