Электронная библиотека » Вандад Нахавандипур » » онлайн чтение - страница 59


  • Текст добавлен: 14 июля 2014, 12:45


Автор книги: Вандад Нахавандипур


Жанр: Зарубежная компьютерная литература, Зарубежная литература


сообщить о неприемлемом содержимом

Текущая страница: 59 (всего у книги 59 страниц)

Шрифт:
- 100% +
См. также

Разделы 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";

NSString *DeparturePlatformKey = @"departurePlatform";

NSString *Arrival = @"arrival";

NSString *ArrivalPlatform = @"arrivalPlatform";


@implementation AppDelegate


– (void) displayPassInformation:(PKPass *)paramPass{


if (paramPass == nil){

NSLog(@"The given pass is nil.");

return;

}


NSLog(@"Departs From = %@",

[paramPass localizedValueForFieldKey: DepartureKey]);

NSLog(@"Departure Platform = %@",

[paramPass localizedValueForFieldKey: DeparturePlatformKey]);

NSLog(@"Arrives at = %@",

[paramPass localizedValueForFieldKey: Arrival]);

NSLog(@"Arrival Platform = %@",

[paramPass localizedValueForFieldKey: ArrivalPlatform]);


}


– (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


if ([PKPassLibrary isPassLibraryAvailable]){

self.passLibrary = [[PKPassLibrary alloc] init];


PKPass *pass =

[self.passLibrary passWithPassTypeIdentifier: PassIdentifier

serialNumber: PassSerialNumber];

[self displayPassInformation: pass];


} else {

/* Здесь можно выполнить еще какое-нибудь действие */

NSLog(@"The pass library is not available.");

}


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];


// Точка переопределения для дополнительной настройки после запуска

приложения

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

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

См. также

Раздел 19.2.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
  • 0 Оценок: 0

Правообладателям!

Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.


Популярные книги за неделю


Рекомендации