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

ЖАНРЫ

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

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

Шрифт:

4. Активизируйте метод экземпляра startGyroUpdatesToQueue: withHandler:, относящийся к классу CMMotionManager. Объект очереди может просто представлять собой главную операционную очередь (как мы увидим позже), а блок обработчика должен соответствовать формату CMGyroHandler.

Эти шаги реализуются в следующем коде:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

CMMotionManager *manager = [[CMMotionManager alloc] init];

if ([manager isGyroAvailable]){

if ([manager isGyroActive] == NO){

[manager setGyroUpdateInterval:1.0f / 40.0f];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[manager

startGyroUpdatesToQueue: queue

withHandler: ^(CMGyroData *gyroData, NSError *error) {

NSLog(@"Gyro Rotation x = %.04f", gyroData.rotationRate.x);

NSLog(@"Gyro Rotation y = %.04f", gyroData.rotationRate.y);

NSLog(@"Gyro Rotation z = %.04f", gyroData.rotationRate.z);

}];

} else {

NSLog(@"Gyro is already active.");

}

} else {

NSLog(@"Gyro isn't available.");

}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Обсуждение

Класс CMMotionManager

позволяет программисту получить от операционной системы iOS обновления данных гироскопа. Сначала нужно убедиться в том, что гироскоп имеется в том устройстве с iOS, где работает ваше приложение (подробнее об этом рассказано в разделе 18.2). Убедившись в этом, можно вызвать метод экземпляра setGyroUpdateInterval:, относящийся к классу CMMotionManager, чтобы задать количество обновлений, которые вы хотите получать от гироскопа в секунду. Например, если вам требуется N обновлений в секунду, задайте здесь значение 1.0/N.

Установив интервал обновлений, можно вызвать метод экземпляра startGyroUpdatesToQueue: withHandler:, относящийся к классу CMMotionManager, — так задается блок для обработки обновлений. О блоках подробнее рассказано в главе 7. Блоковый объект должен относиться к типу CMGyroHandler, принимающему два параметра.

• gyroData — данные, поступающие от гироскопа, заключены в объекте типа CMGyroData. Можно использовать свойство rotationRate класса CMGyroData (это структура) для получения доступа к значениям x, y и z. Эти значения представляют три эйлерова угла, называемых соответственно крен, тангаж и рыскание. Подробнее эти углы рассматриваются в работах по аэродинамике.

• error — ошибка типа NSError, которая может возникнуть, когда гироскоп посылает нам обновления.

Если вы не хотите работать с блоковыми объектами, нужно вызвать метод экземпляра startGyroUpdates, относящийся к классу CMMotionManager, — вместо метода экземпляра startGyroUpdatesToQueue: withHandler: того же класса, — а также создать специальный собственный поток. В этом потоке мы будем считывать обновления, поступающие от гироскопа и передаваемые свойству gyroData экземпляра используемого нами класса CMMotionManager.

См.

также

Раздел 18.2.

Глава 19. Фреймворк Pass Kit

19.0. Введение

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

На рис. 19.1 показано, как на устройстве с iOS выглядит обычный (бесплатный) железнодорожный билет, отображенный в Passbook.

Рис. 19.1. Железнодорожный билет, представленный в виде талона в приложении Passbook на устройстве с iOS

Приложения iOS для взаимодействия с такими бесплатными билетами могут использовать также фреймворк Passbook. Вернемся к примеру с кофейней. Если мы пишем мобильное приложение для этой кофейни, то можем предусмотреть в нем и такую возможность: посетитель добавляет к дисконтной карточке некоторую сумму, что позволяет ему не только выпить кофе, но и воспользоваться Wi-Fi-соединением. Итак, когда пользователь открывает такое приложение, он замечает в базе данных Passbook клубный талон, полученный именно в этой кофейне. Пользователь может добавить некоторую сумму к этому талону прямо на устройстве, а затем сообщить барриста, что внес плату за пользование сетью через приложение, где имеется виртуальный клубный талон.

Pass Kit — это цифровое решение от Apple для осуществления именно таких транзакций. Итак, разберемся с терминологией, а затем изучим эту тему подробнее.

• Pass Kit. Фреймворк Pass Kit от Apple позволяет разработчикам доставлять виртуальные скидочные талоны, снабженные цифровой подписью, на совместимые устройства с операционной системой iOS 6 и выше.

 Passbook. Клиентское приложение на устройствах с iOS 7. Позволяет хранить и обрабатывать талоны, созданные разработчиками, а также управлять этими талонами.

Итак, мы (разработчики) будем пользоваться Pass Kit для создания талонов с цифровой подписью и доставки их нашим пользователям. Пользователям потребуется взаимодействовать с талонами, которые мы для них создаем, для этого они будут использовать приложение Passbook, установленное на устройстве. Итак, мы сможем выдавать пользователям в цифровой форме различные талоны, проездные билеты, скидочные купоны, дисконтные и клубные карты и т. д. Не придется носить целую стопку карточек в кошельке. Весь этот контент можно хранить в одном месте — в приложении Passbook для iOS.

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

1. Разработчик создает сертификат и соответствующий ему закрытый ключ. Это делается на портале инициализации Apple (Apple Provisioning Portal).

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

Поделиться с друзьями: