Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Рис. 19.22. Активизация Passbook в Xcode

20. Как только вы переведете переключатель для Passbook в положение On (Включено), Xcode свяжется с центром разработки и выберет оттуда все доступные для вас идентификаторы типа талона. В списке (рис. 19.23) выберите тот идентификатор типа талона, который вы создали ранее в этом разделе.

Рис. 19.23.

Выбор корректного идентификатора типа талона в Xcode.

Вот мы и закончили настройку фреймворка Pass Kit! Осталось написать приложение, которое будет иметь доступ к талонам, расположенным на устройстве. Это приложение будет описано в разделе 19.9.

См. также

Разделы 19.6 и 19.7.

19.9. Взаимодействие с Passbook с помощью программирования

Постановка задачи

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

Решение

Включите в проект PassKit.framework и воспользуйтесь библиотекой PKPassLibrary, чтобы найти интересующие вас талоны. Талоны относятся к типу PKPass. Используя этот класс, вы сможете получать информацию о талонах.

Обсуждение

Для чтения этого раздела необходимо внимательно проработать раздел 19.8 и подготовить в Xcode проект для iOS, обладающий корректным профилем инициализации. Это нужно для доступа к вашим талонам, расположенным в пользовательской библиотеке Passbook.

Apple предоставила для iOS-разработчиков фреймворк PassKit.framework. Этот фреймворк позволяет взаимодействовать с талонами, которые пользователь установил на своем устройстве (устройствах). Чтобы можно было использовать этот фреймворк с применением новейшего компилятора LLVM, вам всего лишь потребуется импортировать в проект соответствующий обобщающий заголовок, вот так:

#import «AppDelegate.h»

#import <PassKit/PassKit.h>

<# Остаток вашего кода находится здесь #>

Далее потребуется объявить закрытое свойство типа PKPassLibrary в файле реализации делегата нашего приложения. Вышеупомянутый класс из фреймворка PassKit.framework позволяет взаимодействовать с талонами, добавленными на устройство. Для считывания значений, таких как номер платформы, с которой отправляется поезд, и город отправления, вам также нужно знать ключи из файла pass.json, который вы создали в разделе 19.2. Итак, объявим и эти ключи, тоже в файле реализации делегата приложения:

#import «AppDelegate.h»

#import <PassKit/PassKit.h>

@interface AppDelegate 

@property (nonatomic, strong) PKPassLibrary *passLibrary;

@end

NSString *PassIdentifier = @"pass.pixolity.testingpasskit";

NSString *PassSerialNumber = @"p69f2J";

NSString *DepartureKey = @"departure";

NSString *DeparturePlatformKey = @"departurePlatform";

NSString *Arrival = @"arrival";

NSString *ArrivalPlatform = @"arrivalPlatform";

@implementation AppDelegate

<# Остаток
вашего кода находится здесь #>

Великолепно! Написав этот код, вы теоретически получаете возможность доступа к библиотеке Passbook, расположенной на устройстве. Но погодите: а что делать, если на устройстве не установлена эта библиотека? Сначала нужно проверить, имеется ли библиотека Passbook на устройстве. Для этого используется метод класса isPassLibraryAvailable, относящийся к классу PKPassLibrary.

Далее нужно инстанцировать свойство passLibrary типа PKPassLibrary, а потом воспользоваться относящимся к библиотеке талонов методом экземпляра passWithPassTypeIdentifier: serialNumber:, чтобы найти искомый талон. Вот теперь понятно, почему среди различных ключей, относящихся к талону, мы, в частности, определяли идентификатор талона и его серийный номер. Вышеупомянутый метод вернет объект типа PKPass, который будет соответствовать вашему талону. Имея объект талона, вы можете считывать значения его ключей различными способами.

Ключи, задаваемые по умолчанию, в частности название организации и серийный номер, отображаются на свойства. Apple делает это за вас в классе PKPass. Однако если вы хотите получить доступ к значениям внутри primaryFields или в других подобных местах, то потребуется воспользоваться методом экземпляра localizedValueForFieldKey:, относящимся к классу PKPass. Мы сообщаем этому методу наши ключи, чтобы получить значения, ассоциированные с этими ключами. Далее показан небольшой фрагмент кода, позволяющий узнать информацию из талона, созданного в разделе 19.2: начальную и конечную точки маршрута, а также соответствующие железнодорожные платформы.

Код взят из файла реализации делегата нашего приложения.

#import «AppDelegate.h»

#import <PassKit/PassKit.h>

@interface AppDelegate 

@property (nonatomic, strong) PKPassLibrary *passLibrary;

@end

NSString *PassIdentifier = @"pass.pixolity.testingpasskit";

NSString *PassSerialNumber = @"p69f2J";

NSString *DepartureKey = @"departure";

Поделиться:
Популярные книги

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Друд, или Человек в черном

Симмонс Дэн
Фантастика:
социально-философская фантастика
6.80
рейтинг книги
Друд, или Человек в черном

Волхв

Земляной Андрей Борисович
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волхв

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле