My-library.info
Все категории

Вандад Нахавандипур - iOS. Приемы программирования

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Вандад Нахавандипур - iOS. Приемы программирования. Жанр: Программирование издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
iOS. Приемы программирования
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
196
Читать онлайн
Вандад Нахавандипур - iOS. Приемы программирования

Вандад Нахавандипур - iOS. Приемы программирования краткое содержание

Вандад Нахавандипур - iOS. Приемы программирования - описание и краткое содержание, автор Вандад Нахавандипур, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

iOS. Приемы программирования читать онлайн бесплатно

iOS. Приемы программирования - читать книгу онлайн бесплатно, автор Вандад Нахавандипур

Чтобы наш PHP-сценарий мог обмениваться информацией с APNS, потребуется задать ему SSL-сертификат, который мы сгенерировали ранее, на портале разработки для iOS. Именно поэтому мы извлекли. cer-файл сертификата и файл. p12 закрытого ключа — теперь мы должны задать эти файлы нашему PHP-сценарию. Чтобы это сработало, используем в окне терминала openssl, а затем комбинируем сертификат и закрытый ключ. p12 в едином PEM-файле. В этой книге мы не можем подробно поговорить о PEM-файлах — это тема для отдельной книги. Однако вы можете подробнее познакомиться с этой темой в документе RFC 1421.

Для создания PEM-файла выполните следующие шаги (предполагается, что вы уже экспортировали файлы PushKey.p12 и PushCertificate.cer на ПК, как было описано ранее).

1. Откройте окно терминала (Terminal) в OS X. Введите в окне терминала следующую команду:


openssl x509 — in PushCertificate.cer — inform der — out PushCertificate.pem


2. Чтобы преобразовать файл. p12 в PEM-файл, введите в окне терминала следующую команду:


openssl pkcs12 — nocerts — in PushKey.p12 — out PushKey.pem


3. Система потребует ввести пароль, который вы задали для этого закрытого ключа, когда экспортировали его из раздела Keychain Access. После того как пароль для импорта будет проверен и подтвержден, OpenSSL запросит у вас фразу-пароль для результирующего PEM-файла. Этот пароль должен содержать не менее четырех символов. Задайте такой пароль и хорошо запомните его для последующего использования.

4. Теперь у вас на ПК должно быть два PEM-файла: PushCertificate.pem и PushKey.pem. Нужно сложить их в единый PEM-файл — этот формат распознается PHP. Для этого воспользуйтесь следующей командой:


cat PushCertificate.pem PushKey.pem > PushCertificateAndKey.pem


5. Теперь проверим, сможем ли мы подключиться к песочнице (речь идет о тестовой версии, только для целей разработки) с помощью сгенерированных нами PEM-файлов. В качестве песочницы используется защищенный APNS-сервер. Выполните в окне терминала следующую команду:


openssl s_client — connect gateway.sandbox.push.apple.com:2195 

— cert PushCertificate.pem — key PushKey.pem


Если все будет нормально, то на данном этапе потребуется ввести фразу-пароль для вашего закрытого ключа. Помните ее? Хорошо, вводите. Если соединение будет успешно установлено, откроется OpenSSL, ожидающий от вас нескольких символов в качестве ввода. После получения этого ввода соединение будет закрыто. Введите любые случайные символы и нажмите Enter (Ввод). Соединение закрыто. Вам удалось успешно связаться с APNS-сервером, воспользовавшись вашим сертификатом и закрытым ключом.

Теперь напишем несложный PHP-сценарий для отправки простого пуш-уведомления на устройство. Но прежде чем мы двинемся дальше, необходимо получить маркер пуш-уведомлений, действующий на нашем устройстве. Мы должны получить его в таком формате, который понятен PHP. iOS инкапсулирует маркер пуш-уведомления в экземпляр NSData, но PHP неизвестно, что такое NSData. Нам нужно преобразовать этот маркер в строку, которую мы сможем использовать в нашем PHP-сценарии. Для этого считываем весь маркер байт за байтом и преобразуем каждый байт в шестнадцатеричное строковое представление:


— (void) application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{


/* Каждый байт данных будет преобразован в свое шестнадцатеричное

значение, например 0x01 или 0xAB. При этом часть 0x отбрасывается.

Итак, для представления 1 байта нам потребуются два символа, поэтому

здесь указано * 2 */

NSMutableString *tokenAsString = [[NSMutableString alloc]

initWithCapacity: deviceToken.length * 2];


char *bytes = malloc(deviceToken.length);

[deviceToken getBytes: bytes];


for (NSUInteger byteCounter = 0;

byteCounter < deviceToken.length;

byteCounter++){


char byte = bytes[byteCounter];

[tokenAsString appendFormat:@"%02hhX", byte];

}


free(bytes);


NSLog(@"Token = %@", tokenAsString);


}

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

Token = 05924634A8EB6B84437A1E8CE02E6BE6683DEC83FB38680A7DFD6A04C6CC586E

Отметьте себе этот маркер устройства, так как мы будем пользоваться им в PHP-сценарии:

<?php

/* При разработке мы пользуемся защищенной версией APNS. При подготовке

приложения для использования в реальных условиях измените это значение

на ssl://gateway.push.apple.com:2195 */

$apnsServer = 'ssl://gateway.sandbox.push.apple.com:2195';


/* Убедитесь, что это значение совпадает с паролем, который вы задали

для закрытого ключа при экспорте в.pem-файл, когда использовали openssl

в системе OS X */

$privateKeyPassword = '1234';


/* Если хотите, запишите здесь собственное сообщение */

$message = 'Welcome to iOS 7 Push Notifications';


/* Запишите здесь маркер вашего устройства */

$deviceToken =

'05924634A8EB6B84437A1E8CE02E6BE6683DEC83FB38680A7DFD6A04C6CC586E';


/* Замените эту информацию именем файла, указанного в файле вашего

сценария. В этом файле должны содержаться сгенерированные вами ранее

сертификат и закрытый ключ */

$pushCertAndKeyPemFile = 'PushCertificateAndKey.pem';


$stream = stream_context_create();


stream_context_set_option($stream,

'ssl',

'passphrase',

$privateKeyPassword);


stream_context_set_option($stream,

'ssl',

'local_cert',

$pushCertAndKeyPemFile);


$connectionTimeout = 20;

$connectionType = STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT;

$connection = stream_socket_client($apnsServer,

$errorNumber,

$errorString,

$connectionTimeout,

$connectionType,

$stream);


if (!$connection){

echo «Failed to connect to the APNS server. Error no = $errorNumber<br/>»;

exit;

} else {

echo «Successfully connected to the APNS. Processing…</br>»;

}

$messageBody['aps'] = array('alert' => $message,

'sound' => 'default',

'badge' => 2,

);


$payload = json_encode($messageBody);


$notification = chr(0).

pack('n', 32).

pack('H*', $deviceToken).

pack('n', strlen($payload)).

$payload;


$wroteSuccessfully = fwrite($connection, $notification,

strlen($notification));


if (!$wroteSuccessfully){

echo «Could not send the message<br/>»;

}

else {

echo «Successfully sent the message<br/>»;

}


fclose($connection);


Если вы даже не программируете на PHP, внимательно просмотрите этот сценарий и почитайте комментарии к нему. Обязательно замените все значения в этом сценарии теми, что соответствуют вашему приложению. Например, используемый здесь маркер относится к моему устройству. Пользуйтесь маркером своего устройства, который выяснили ранее в этом разделе. У вас будут иные пароли, pem-файлы, скорее всего, будут находиться в других местах. Ради дополнительного упрощения этого раздела я поместил свой PHP-сценарий в тот же каталог, в котором ранее сохранил закрытый ключ и. pem-файл сертификата (PushCertificateAndKey.pem). Поэтому я могу обращаться к. pem-файлу просто по его имени.

Если вы правильно выполнили все шаги и инструкции, описанные в этом разделе, то ваш PHP-сценарий должен открываться в браузере. После этого на устройство начнут поступать уведомления. Сценарий посылает уведомление на APNS-сервер, который уже доставляет это уведомление на устройство. Когда пуш-уведомление попадает на устройство (предполагается, что на устройстве в этот момент отображается экран блокировки), вы увидите на экране примерно такую картинку, какая показана на рис. 15.12.


Рис. 15.12. Пуш-уведомление, отображенное на экране блокировки

См. также

Раздел 15.7.

15.9. Реагирование на пуш-уведомления

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

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

Решение

Реализуйте метод application: didReceiveRemoteNotification: делегата вашего приложения.

Обсуждение

Метод application: didReceiveRemoteNotification: делегата вашего приложения вызывается всякий раз, когда в систему iOS поступает пуш-уведомление и пользователь реагирует на это уведомление каким-то образом, инициируя открытие приложения. Этот метод срабатывает, когда приложение функционирует в приоритетном или в фоновом режиме, а не завершено. Например, пользователь может проигнорировать поступившее уведомление. Тогда и этот метод вызван не будет. Если пользователь нажимает на экране окно с пуш-уведомлением, в результате чего ваше приложение открывается, то iOS, открыв это приложение, переводит программу в приоритетный режим. После этого в делегате вашего приложения будет вызван вышеупомянутый метод.


Вандад Нахавандипур читать все книги автора по порядку

Вандад Нахавандипур - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге iOS. Приемы программирования, автор: Вандад Нахавандипур. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.