Взаимодействие с передачами в приложении

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

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

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

[[UIApplication sharedApplication] openURL:[pass passURL]]

Проверка, доступна ли библиотека передачи

Присутствие платформы Набора Передачи и ее классов не означает, что библиотека передачи доступна. Для проверки на его доступность вызовите isPassLibraryAvailable метод PKPassLibrary класс.

Проверка, является ли передача в библиотеке

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

Проверять, является ли передача в библиотеке:

  1. Создайте экземпляр PKPass класс для передачи.

  2. Создайте экземпляр PKPassLibrary класс.

  3. Вызовите containsPass: метод PKPassLibrary класс с передачей Вы просто создали.

Получение передач

Используйте passes метод PKPassLibrary класс для получения всех передач, что приложение названо на доступ. Передачи возвращаются в произвольном порядке. Если Ваши отображения приложения список передач, это должно сортировать их некоторым значимым способом такой как по дате.

Получить уведомления, когда библиотека передачи изменяется, регистр для PKPassLibraryDidChangeNotification уведомление. Передайте экземпляр PKPassLibrary как объект. Библиотека передачи не является одиночным элементом; каждый экземпляр отправляет свои собственные уведомления, и Вы хотите уведомления от этого определенного экземпляра. Используйте addObserverForName:object:queue:usingBlock: метод, чтобы указать, что Вы хотите ответить на основной очереди и обеспечить блок для обработки уведомления. Пользовательский информационный словарь уведомления описывает то, что изменилось. Поочередно, используйте dispatch_async и dispatch_get_main_queue функции для ответа на основном потоке.

Чтение передачи

Используйте passWithPassTypeIdentifier:serialNumber: метод PKPassLibrary класс чтения определенная передача от библиотеки передачи.

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

Можно получить доступ к определенным полям передачи с помощью их ключа с localizedValueForFieldKey: метод. Это полезно при создании передачи потому что тогда Вы знаете ключи для определенных полей.

Добавление новой передачи

Добавить передачу в библиотеку:

  1. Создайте экземпляр PKPass класс для передачи, инициализируя его с данными передачи.

  2. Используйте containsPass: метод PKPassLibrary класс проверки, является ли передача в библиотеке. Ваше приложение может использовать этот метод для обнаружения присутствия передачи, даже если это не имеет прав для чтения передач в библиотеке.

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

    Представьте добавить контроллер представления передач модально с анимацией.

Изменение передачи

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

Для изменения передачи скоординируйте с сервером:

  1. Ваше приложение соединяется с Вашим сервером. Это идентифицирует передачу порядковым номером и идентификатором типа передачи и описывает изменение в Вашем сервере.

  2. Ваш сервер обновляет Ваши бизнес-записи по мере необходимости, создает новую версию передачи и подписывает ее.

  3. Ваши загрузки приложений новая передача от Вашего сервера и использования replacePassWithPass: метод PKPassLibrary класс для установки его.

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

Удаление передачи

Используйте removePass: метод PKPassLibrary класс для удаления передачи.

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