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

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

Жанры

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

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

Шрифт:

6. Теперь откройте окно Keychain Access (Доступ к связке ключей) на OS X и перейдите к связке ключей Login (если эта связка ключей задана у вас по умолчанию). В разделе My Certificates (Мои сертификаты) найдите тот сертификат, который вы только что импортировали в связку ключей, и раскройте его, щелкнув на маленькой кнопке со стрелкой слева. Так вы узнаете ассоциированный с этим приложением закрытый ключ (рис. 15.11).

Рис. 15.11.

Сертификат для работы с пуш-уведомлениями на этапе разработки и его закрытый ключ

7. Щелкните на сертификате правой кнопкой мыши и экспортируйте его как. cer-сертификат (а не как файл. p12). Назовите его PushCertificate.cer.

8. Щелкните правой кнопкой мыши на закрытом ключе и экспортируйте его как файл. p12 (а не как файл сертификата). Назовите его PushKey.p12. Здесь потребуется указать пароль к закрытому ключу. Обязательно используйте такой пароль, который впоследствии сможете вспомнить.

Отлично. Теперь, чтобы упростить дальнейший материал этого раздела, перейдем к использованию PHP. Применим этот язык для отправки на наше устройство простого пуш-уведомления. В разделе 15.7 мы уже настроили получение пуш-уведомлений в этом приложении. Поскольку настройка использования PHP на сервере Apache не относится к темам этой книги, мы воспользуемся упрощенным вариантом и применим MAMP. MAMP установит у вас на компьютере Apache и PHP, если вы еще не сделали этого. На сайте MAMP даются подробные инструкции о том, какие шаги потребуется выполнить. Когда вы установите MAMP, корневой каталог со всеми вашими PHP-файлами будет находиться по адресу /Applications/MAMP/htdocs/. Если при последующей установке этот каталог изменится, откройте MAMP, перейдите в раздел Preferences (Настройки), а потом — к Apache. Вы найдете там и корневой каталог Apache.

Чтобы наш 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];

}

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

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

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

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Черный Маг Императора 18

Герда Александр
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 18

Я еще барон. Книга III

Дрейк Сириус
3. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще барон. Книга III

Телохранитель Генсека. Том 4

Алмазный Петр
4. Медведев
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Телохранитель Генсека. Том 4

Изгой Проклятого Клана. Том 4

Пламенев Владимир
4. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 4

Возмутитель спокойствия

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

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Зодчий. Книга IV

Погуляй Юрий Александрович
4. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Зодчий. Книга IV

Сильнейший ученик. Том 2

Ткачев Андрей Юрьевич
2. Пробуждение крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сильнейший ученик. Том 2

Двойник Короля 7

Скабер Артемий
7. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 7

Школа пластунов

Трофимов Ерофей
Одиночка
Фантастика:
боевая фантастика
5.00
рейтинг книги
Школа пластунов