Я пытался перейти на новый API провайдера APN.
До миграции я использовал этот скрипт для отправки тестовых push-уведомлений на мое тестовое устройство.
<?php
// Поместите токен вашего устройства здесь (без пробелов):
$deviceToken = 'b5fa6af3eb6482ffa5d8551a0dcca76a780dcfc9662fbc7163a56d0973de8a9f';
// Поместите парольную фразу вашего закрытого ключа здесь:
$passphrase = 'pushchat';
// Поместите свое предупреждающее сообщение здесь:
$message = 'Привет!';
////////////////////////////////////////////////// ///////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'парольная фраза', $парольная фраза);
// Открываем соединение с APNS-сервером
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
если (!$fp)
exit("Не удалось подключиться: $err $errstr". PHP_EOL);
echo "Подключено к APNS". PHP_EOL;
// Создаем тело полезной нагрузки
$body['aps'] = массив(
'предупреждение' => $сообщение,
'звук' => 'по умолчанию'
);
// Кодируем полезную нагрузку как JSON
$payload = json_encode($body);
// Создаем бинарное уведомление
$msg = chr(0) . пакет('n', 32) . пакет('H*', $deviceToken) . пакет('n', strlen($payload)) . $ полезная нагрузка;
// Отправляем на сервер
$result = fwrite($fp, $msg, strlen($msg));
если (!$результат)
эхо 'Сообщение не доставлено' . PHP_EOL;
еще
echo 'Сообщение успешно доставлено' . PHP_EOL;
// Закрываем соединение с сервером
fclose($fp);
Согласно с Отправка запросов на уведомление в APN, теперь требуются поля заголовка
нравиться метод
и дорожка
.
Когда я копирую и вставляю заголовки из Отправка запросов на уведомление в APN ответ терминала Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный токен ":" в папке /Users/Desktop/simple push/simplepush.php в строке 6
<?php
ЗАГОЛОВКИ
- END_STREAM
+ END_HEADERS
:метод = ПОСТ
: схема = https
:path = /3/device/EXAMPLETOKEN
хост = api.sandbox.push.apple.com
apns-id = eabeae54-14a8-11e5-b60b-1697f925ec7b
apns-push-type = оповещение
срок действия apns = 0
apns-приоритет = 10
ДАННЫЕ
+ END_STREAM
{ "aps" : { "оповещение" : "Здравствуйте" } }
// Поместите токен вашего устройства здесь (без пробелов):
$deviceToken = 'EXAMPLETOKEN'; // Поместите парольную фразу вашего закрытого ключа здесь:
$passphrase = 'pushchat';
// Поместите свое предупреждающее сообщение здесь:
$message = 'Привет!';
////////////////////////////////////////////////// /////////////////. /////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'парольная фраза', $парольная фраза);
// Открываем соединение с APNS-сервером
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
если (!$fp)
exit("Не удалось подключиться: $err $errstr". PHP_EOL);
echo "Подключено к APNS". PHP_EOL;
// Создаем тело полезной нагрузки
$body['aps'] = массив(
'предупреждение' => $сообщение,
'звук' => 'по умолчанию'
);
// Кодируем полезную нагрузку как JSON
$payload = json_encode($body);
// Создаем бинарное уведомление
$msg = chr(0) . пакет('n', 32) . пакет('H*', $deviceToken) . пакет('n', strlen($payload)) . $ полезная нагрузка;
// Отправляем на сервер
$result = fwrite($fp, $msg, strlen($msg));
если (!$результат)
эхо 'Сообщение не доставлено' . PHP_EOL;
еще
echo 'Сообщение успешно доставлено' . PHP_EOL;
// Закрываем соединение с сервером
fclose($fp);
Как правильно реализовать эти поля заголовка с помощью этого скрипта, чтобы он мог отправлять тестовые push-уведомления?