Проект передачи и создание

Файлы, составляющие передачу, располагаются в пакете, названном пакетом передачи. В центре передачи названный файл JSON pass.json который определяет передачу. Файл содержит информацию, идентифицирующую передачу, текст, появляющийся на нем, и другая информация о передаче. В дополнение к этому файлу Вы обеспечиваете данные локализации и изображения. Рисунок 3-1 показывает структуру каталогов для демонстрационной передачи, обеспечивающей значок, логотип и миниатюру. Передача локализуется на английском и китайском языке, это имеет и в размерах Сетчатки и несетчатки активов изображения, и логотип локализуется.

  Структура каталогов рисунка 3-1 демонстрационной передачи

Большая часть Вашей работы в создании передачи выполнена путем обеспечения ключей и значений в pass.json файл.

Передачи идентифицируются идентификатором типа передачи и порядковым номером

Идентификатор типа передачи концептуально подобен идентификатору пакета или имени класса. Значение для passTypeIdentifier введите передачу, указывает идентификатор типа передачи. Это - строка, выбранная Вами, который определяет класс или категорию передач. Это всегда начинается pass. и использование инвертирует стиль DNS — например, pass.com.example.membership-card. Используйте Сертификаты, область Identifiers & Profiles Задействованного Центра для регистрации идентификатора типа передачи. Идентификатор типа передачи должен соответствовать, сертификат раньше подписывал передачу.

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

Порядковый номер является строкой, однозначно определяющей передачу в рамках ее типа передачи. Значение для serialNumber введите передачу, указывает порядковый номер. Порядковый номер непрозрачен к Сберкнижке; Вы свободны присвоиться, это любым способом целесообразно. Монотонно увеличивающееся целое число или UUID являются удобными способами присвоить порядковый номер.

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

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

Запрошенная информация предоставлена ключами верхнего уровня

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

Версия формата файла указана formatVersion ключ; его значение является номером 1.

Идентификатор команды является серией букв и чисел, выпущенных Вам Apple. Значение для teamIdentifier введите передачу, указывает идентификатор команды. Это должно соответствовать Команду, ID сертификата раньше подписывал передачу. Можно найти Команду ID в Задействованном Центре, или можно найти его в Доступе Цепочки для ключей путем рассмотрения поля Organizational Unit сертификата.

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

Описание позволяет VoiceOver сделать Вашу передачу доступной для ослепления и пользователи плохого зрения. Значение для description введите передачу, указывает описание. Описание должно запуститься с высокоуровневого срока, такого как «Членский билет», “Еженедельный купон” или «Билет на автобус», сопровождаемый одними или двумя маленькими данными, такими как предложение купона и хранилище, где это допустимо. Не пытайтесь суммировать все содержание передачи, но включать достаточно подробности, чтобы позволить пользователям различить передачи того же типа.

Стиль передачи устанавливает полное визуальное появление

Стиль передачи определяет полное визуальное появление передачи и шаблона для размещения информации о передаче. Самая отличительная визуальная индикация относительно стиля в главном краю передачи: билеты имеют маленькое очертание, купоны имеют перфорированный край и т.д.

В отличие от идентификаторов типов передачи, которые Вы определяете, стили передачи являются частью API, как их значение. Нет никакого средства для Вас, чтобы изменить их или добавить новые. Идентификаторы типов передачи категоризируют передачи в очень особенном методе; стили передачи категоризируют передачи намного более общим высокоуровневым способом.

Вы указываете стиль передачи путем обеспечения соответствующего ключа на верхнем уровне pass.json файл:

Значение этого ключа является словарем, содержащим поля, содержащие содержание передачи. Перечисление 3-1 показывает передачу, использующую стиль посадочного талона с заполнителем для полевых словарей.

Перечисление 3-1  Частичная передача, показывающая ключи верхнего уровня

{
    "description" : "Boarding pass for October 4, San Francisco to London",
    "formatVersion" : 1,
    "passTypeIdentifier" : "pass.com.example.boarding-pass",
    "serialNumber" : "123456",
    "boardingPass" : {
        <<field dictionaries>>
    }
}

Стиль передачи управляет, как размечаются поля и какие изображения могут использоваться. Таблица 3-1 показывает изображения, поддерживаемые каждым стилем передачи и числом и размещением полей для каждого стиля передачи. Стиль передачи также влияет на информацию об уместности — для подробных данных, посмотрите, что Отображения информации Уместности Передают Экран Блокировки.

Табличные 3-1  стили Передачи, изображения и расположение

Стиль передачи

Поддерживаемые изображения

Расположение

Посадочный талон

логотип, значок, нижний колонтитул

Посмотрите рисунок 3-2

Купон

логотип, значок, полоса

Посмотрите рисунок 3-3

Билет

логотип, значок, полоса, фон, миниатюра

При указании изображения полосы не указывайте фоновое изображение или миниатюру.

Посмотрите рисунок 3-4

Универсальный

логотип, значок, миниатюра

Посмотрите рисунок 3-5

Магазинная карточка

логотип, значок, полоса

Посмотрите рисунок 3-6

  Расположение рисунка 3-2
расположения passFigure 3-3 обшивки
  
расположения couponFigure 3-4
  
расположения ticketFigure 3-5 события
  универсального
расположения passFigure 3-6
  магазинной карточки

Стиль передачи определяет максимальное количество полей, которые могут появиться на передней стороне передачи:

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

Поля содержат текст, выведенный на экран на передаче

Информация, показанная на передаче, разбита в поля. Каждое поле определяется словарем, дающим ему значение и метку (которые выведены на экран пользователю), уникальный ключ и дополнительная информация о том, как должно быть отформатировано ее значение. Перечисление 3-2 показывает передачу с несколькими простыми полями.

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

  Передача перечисления 3-2 с простыми полями

{
    "description" : "Boarding pass for October 4, San Francisco to London",
    "formatVersion" : 1,
    "passTypeIdentifier" : "pass.com.example.boarding-pass",
    "serialNumber" : "123456",
    "boardingPass" : {
        "primaryFields" : [
            {
                "key" : "origin",
                "label" : "San Francisco",
                "value" : "SFO"
            },
            {
                "key" : "destination",
                "label" : "London",
                "value" : "LHR"
            }
        ],
        "secondaryFields" : [
            {
                "key" : "boarding-gate",
                "label" : "Gate",
                "value" : "F12"
            }
        ],
        "auxiliaryFields" : [
            {
                "key" : "seat",
                "label" : "Seat",
                "value" : "7A"
            },
            {
                "key" : "passenger-name",
                "label" : "Passenger",
                "value" : "John Appleseed"
            }
        ],
        "transitType" : "PKTransitTypeAir"
    }
}

Упорядочивание между списками полей не является значительным, но упорядочивание полей в списке является значительным. Например, помещение основных полей прежде или после вторичных полей не изменяется, где основные и вторичные поля появляются, но помещение присвоения места прежде или после пассажирских смен имени упорядочивание тех двух полей на передаче. Это вызвано тем, что пары ключ/значение в словаре не упорядочиваются, но списки.

Для полного списка ключей, используемых в полевом словаре и их возможных значениях, посмотрите Полевые Ключи Словаря.

Полевое форматирование поддержки

Существует три вида форматирования, можно примениться к полю: выравнивание, средства форматирования даты и средства форматирования числа:

Позволение Сберкнижке обработать даты, времена и валютные суммы гарантирует правильный дисплей, форматирующий на основе локали пользователя. Перечисление 3-3 показывает пример даты и форматирования чисел.

Перечисление 3-3  Частичная передача с датой и форматированием чисел

{
    ...
 
    "description" : "Concert ticket to see The Hectic Glow",
    "eventTicket" : {
        "primaryFields" : [
            {
                "key" : "event-name",
                "label" : "Event",
                "value" : "The Hectic Glow in concert"
            }
        ],
        "secondaryFields" : [
            {
                "dateStyle" : "PKDateStyleMedium",
                "isRelative" : true,
                "key" : "doors-open",
                "label" : "Doors open",
                "timeStyle" : "PKDateStyleShort",
                "value" : "2013-08-10T19:30-06:00"
            },
            {
                "key" : "seating-section",
                "label" : "Seating section",
                "numberStyle" : "PKNumberStyleSpellOut",
                "textAlignment" : "PKTextAlignmentRight",
                "value" : 5
            }
        ]
    }
}

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

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

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

Перечисление 3-4 показывает примеры задних полей. Они входят в то же место в файле передачи как остальная часть полей — этот ключ является одноуровневым элементом к primaryFields и auxiliaryFields.

Перечисление 3-4  Частичная передача с задними полями

{
    ...
 
    "backFields" : [
        {
            "key" : "frequent-flier-number",
            "label" : "Frequent flier number",
            "value" : "1234-5678"
        },
        {
            "key" : "website",
            "label" : "Track my checked bags",
            "value" : "http://www.example.com/track-bags/XYZ123"
        },
        {
            "key" : "customer-service",
            "label" : "Customer service",
            "value" : "(800) 555-0199"
        },
        {
            "key" : "terms",
            "label" : "Terms and Conditions",
            "value" : "O Fortuna velut luna statu variabilis, semper crescis aut decrescis; vita detestabilis nunc obdurat et tunc curat ludo mentis aciem, egestatem, potestatem dissolvit ut glaciem.\n\n Sors immanis et inanis, rota tu volubilis, status malus, vana salus semper dissolubilis, obumbrata et velata michi quoque niteris; nunc per ludum dorsum nudum fero tui sceleris.\n\n Sors salutis et virtutis michi nunc contraria, est affectus et defectus semper in angaria.  Hac in hora sine mora corde pulsum tangite; quod per sortem sternit fortem, mecum omnes plangite!"
        }
    ]
}

Текст задних полей выполняется через детекторы данных для URLs и телефонных номеров, появляющихся как активные ссылки. Пользователи могут коснуться на URL для запуска его в Safari и на телефонных номерах для набора номера их. Текст на обратной стороне карты может включать разрывы строки, которых оставляют в файле JSON как \n.

Для обеспечения ссылки к приложению обеспечьте список идентификаторов элемента iTunes Store как значение associatedStoreIdentifiers ключ на верхнем уровне pass.json файл.

Ссылка штрихкодов передает Вашим записям

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

Для добавления штрихкода к передаче обеспечьте значение для barcode ключ на верхнем уровне pass.json файл. Значение является словарем, описывающим штрихкод, который Вы хотите вывести на экран. Укажите формат штрихкода и обеспечьте сообщение, которое будет выведено на экран и кодирование, используемое сообщением. Дополнительный дополнительный текст представляется около штрихкода и содержит код, который будет вводиться вручную, если не может быть отсканирован штрихкод. Перечисление 3-5 показывает часть передачи в качестве примера, содержащей штрихкод.

Перечисление 3-5  Частичная передача со штрихкодом

{
    ...
 
    "barcode" : {
        "message" : "ABCD 123 EFGH 456 IJKL 789 MNOP",
        "format" : "PKBarcodeFormatPDF417",
        "messageEncoding" : "iso-8859-1"
    }
}

Сканнеры штрихкода и программное обеспечение обычно используют ISO 8859-1 кодирование (также известный как латинский 1) или кодирование Windows 1252 (иногда неправильно маркированный латинский 1). Unicode в частности плохо поддерживается большинством систем. Сама сберкнижка поддерживает все кодировки, поддерживаемые NSString класс.

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

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

Цвета передачи могут быть настроены

По умолчанию Сберкнижка выбирает цвета для Вашего фона передачи и текста. Для переопределения цвета обеспечьте значение для надлежащего ключа на верхнем уровне pass.json файл. Цвета указаны как значения RGB — например, rgb(0, 255, 0) яркий зеленый. Можно настроить три цвета:

Заливка изображений их выделенное пространство

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

Отображения информации уместности передают экран блокировки

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

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

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

Для обеспечения соответствующей даты добавьте relevantDate ключ на верхнем уровне передачи. Его значение является меткой времени W3C, или полная дата плюс часы и минуты или полная дата плюс минуты часов и секунды. Для получения дополнительной информации о формате метки времени, посмотрите Форматы Времени и даты на веб-сайте W3C.

Для обеспечения соответствующих расположений добавьте locations ключ на верхнем уровне передачи. Ее значение является массивом словарей с долготой, широтой и дополнительной информацией о высоте. Перечисление 3-6 показывает часть передачи в качестве примера, обеспечивающей и относительную дату и три соответствующих расположения.

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

Перечисление 3-6  Частичная передача с информацией об уместности

{
    ...
 
    "description" : "Example pass showing relevance information",
    "locations" : [
        {"latitude" : 37.3229, "longitude" : -122.0323},
        {"latitude" : 37.3286, "longitude" : -122.0143},
        {
            "altitude" : 10.0,
            "latitude" : 37.331,
            "longitude" : -122.029,
            "relevantText" : "Store nearby on 3rd and Main."
        }
    ],
    "relevantDate" : "2014-12-05T09:00-08:00"
}

В зависимости от стиля передачи информация об уместности интерпретируется немного отличающимися способами, как перечислено в Таблице 3-2. Когда расположение интерпретируется с маленьким радиусом, текущее расположение должно быть на порядке ста метров или ближе; с большим радиусом, на порядке тысячи метров или ближе. В обоих случаях точный радиус уместности является подробностью реализации и может измениться.

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

Табличный 3-2  стиль Передачи и информация об уместности

Стиль передачи

Соответствующая дата

Соответствующие расположения

Уместность

Посадочный талон

Дополнительный.

Дополнительный.

Интерпретируемый с большим радиусом.

Релевантный, если дата и любые соответствия расположения.

До iOS 6.1, релевантного, если дата или любые соответствия расположения.

Без соответствующей даты, релевантной, если соответствует расположение.

Купон

Не поддерживаемый.

Требуемый, если предоставлена информация уместности.

Интерпретируемый с маленьким радиусом.

Релевантный, если соответствует какое-либо расположение.

Билет

Дополнительный.

До iOS 7.1, требуемого, если предоставлена информация уместности.

Дополнительный.

Интерпретируемый с большим радиусом.

Релевантный, если дата и любые соответствия расположения.

Без соответствующего расположения, релевантного, если соответствует дата.

Универсальный

Дополнительный.

Требуемый, если предоставлена информация уместности.

Интерпретируемый с маленьким радиусом.

Релевантный, если дата и любые соответствия расположения.

Без соответствующей даты, релевантной, если соответствует какое-либо расположение.

Магазинная карточка

Не поддерживаемый.

Требуемый, если предоставлена информация уместности.

Интерпретируемый с маленьким радиусом.

Релевантный, если соответствует какое-либо расположение.

Система обеспечивает соответствующий текст для передач, имеющих основанную на времени уместность. Для передач с соответствующими расположениями Вы предоставляете описание того, почему передача релевантна в данном расположении. Это может быть так же просто как “Хранилище поблизости” или включать краткое описание того, как найти соответствующее расположение, такое как перекрестные улицы или ориентиры. Не включайте свое название организации в соответствующий текст и не включайте инструкции в пользователя те, которые “Выплачивают эту передачу в XYZ”.

Локализация поддержки передач

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

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

Используйте полевые средства форматирования для отображения чисел и дат в предпочтительном формате и языке пользователя. Для получения дополнительной информации о средствах форматирования, посмотрите, что Полевая Поддержка Форматирует.

Используйте строковый файл для обеспечения локализованных строк. Строковые строки списков файлов, появляющиеся в pass.json файл и строка для отображения для определенного языка. Например, учитывая следующий фрагмент передачи из авиабилета:

{
    ...
 
    "primaryFields" : [
        {
            "key" : "origin",
            "label" : "Seville",
            "value" : "SVQ"
        },
        {
            "key" : "destination",
            "label" : "London",
            "value" : "LHR"
        }
    ]
}

Для локализации этой передачи на испанский и английский язык сделайте следующее:

  1. Файл передачи изменения для факторизации локализуемого текста:

    {
    ...
     
        "primaryFields" : [
            {
                "key" : "origin",
                "label" : "origin_SVQ",
                "value" : "SVQ"
            },
            {
                "key" : "destination",
                "label" : "destination_LHR",
                "value" : "LHR"
            }
        ]
    }

    Значения полей больше не являются текстом, чтобы быть дисплеем — теперь они указывают, какая запись в строковом файле должна использоваться.

  2. Создайте es.lproj каталог в пакете передачи. Создайте строковый названный файл pass.strings содержа испанские строки:

    "origin_SVQ" = "Sevilla";
    "destination_LHR" = "Londres";
  3. Создайте en.lproj каталог в пакете передачи. Создайте строковый названный файл pass.strings содержа английские строки:

    "origin_SVQ" = "Seville";
    "destination_LHR" = "London";

Если существует больше чем одна локализация, для каждой локализации нужно его собственное .lproj каталог, как показано ранее на рисунке 3-1. Если текст в передаче оставили в английском и испанском тексте, были предоставлены в строковом файле, передача выведет на экран на испанском языке только. Для получения дополнительной информации о строковых файлах, посмотрите Строковые ресурсы Локализации.

Изображения, которые должны быть локализованы, появляются в .lproj каталоги для их соответствующих языков. Изображения, которым не нужна локализация, появляются на верхнем уровне передачи. Не включайте изображение в верхний уровень и внутри a .lproj каталог. Для получения дополнительной информации о локализации изображений, посмотрите Локализованные Файлы ресурсов.

Передачи криптографически подписываются и сжаты

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

Для создания файла манифеста рекурсивно перечислите файлы в пакете (кроме файла манифеста и подписи), вычислите хеш SHA 1 содержания тех файлов и храните данные в словаре. Ключи являются относительными путями к файлу от пакета передачи. Значения являются хешем SHA 1 (закодированное шестнадцатеричное число) данных в том пути. Запишите это в файл manifest.json на верхнем уровне пакета передачи.

Для создания файла подписи сделайте отсоединенную подпись № 7 PKCS файла манифеста, с помощью закрытого ключа, связанного с сертификатом подписания. Включайте промежуточный сертификат WWDR как часть подписи; можно загрузить этот сертификат с веб-сайта Apple. Запишите подпись в файл signature на верхнем уровне пакета передачи. Включайте дату и время, что передача была подписана с помощью S/MIME signing-time атрибут.

Для сжатия передачи создайте архив ZIP содержания пакета передачи. Этот архив ZIP - то, что Вы распределяете пользователям.

Передачи Распределяются по электронной почте, сеть или Ваше Приложение

Почта и Safari имеют поддержку, передает iOS 6 и позже и на OS X v10.8.2 и позже, таким образом, можно использовать их для распределения передач по электронной почте или на веб-сайте. На iOS они добавляют передачи в библиотеку передачи непосредственно. На OS X они используют iCloud для добавления передач в устройства на iOS пользователя.

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

Хостинг передает Ваш веб-сервер дает Вам больше контроля пользовательским опытом, но менее прост. Можно дать пользователям ссылку к целевой странице, позволяющей им добавить передачу в свою библиотеку передачи. Эта страница может также предложить представление передачи в более старых форматах, таких как PDF. Эта целевая страница также дает Вам место, чтобы попросить, чтобы пользователь вошел в систему в случае необходимости.

Когда приложение обеспечивает более богатый опыт путем интеграции с системами и бизнесом, Используя Ваше собственное приложение для установки передач является надлежащим. Для получения информации о том, как Ваше приложение может взаимодействовать с передачами, видеть Взаимодействие с Передачами в Вашем Приложении.

Ваши приложения, веб-сайт и электронные письма могут использовать Добавление к значку Сберкнижки, чтобы дать Вашим пользователям визуальную очередь для добавления передачи в Сберкнижку. Для получения дополнительной информации посмотрите раздел Passbook for Developers веб-сайта Разработчика.

Отладка передач

Если передача не выводит на экран и добавляет к Сберкнижке, проверьте журнал на описание того, что пошло не так, как надо. При тестировании в приложении Средства моделирования iOS ошибки регистрируются к системному журналу, который можно просмотреть с Консольным приложением. При тестировании на устройстве ошибки регистрируются к консоли устройства, которую можно просмотреть из окна организатора XCode. Распространенные ошибки включают уродливые файлы JSON, ключи с орфографической ошибкой или значения, идентификаторы типов передачи, не соответствующие Ваш сертификат и подписи, опускающие промежуточный сертификат WWDR.