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

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

Жанры

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

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

Шрифт:

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.

< image l:href="#"/>

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

См. также

Раздел 15.7.

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

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

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

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

Отморозок 1

Поповский Андрей Владимирович
1. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 1

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Московское золото и нежная попа комсомолки. Часть Четвертая

Хренов Алексей
4. Летчик Леха
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Четвертая

Петля, Кадетский корпус. Книга восьмая

Алексеев Евгений Артемович
8. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский корпус. Книга восьмая

Чехов

Гоблин (MeXXanik)
1. Адвокат Чехов
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Чехов

Антимаг его величества

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

Развод. Без права на ошибку

Ярина Диана
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Развод. Без права на ошибку

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Император Пограничья 10

Астахов Евгений Евгеньевич
10. Император Пограничья
Фантастика:
городское фэнтези
аниме
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 10

Гримуар темного лорда IV

Грехов Тимофей
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда IV

Моя простая курортная жизнь 7

Блум М.
7. Моя простая курортная жизнь
Фантастика:
дорама
гаремник
5.00
рейтинг книги
Моя простая курортная жизнь 7

Вечный. Книга III

Рокотов Алексей
3. Вечный
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга III

Вечный. Книга VI

Рокотов Алексей
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Вечный. Книга VI