Intereting Posts
PHP strip_tags: разрешить только первый тег пустое значение элемента в IE Данные сеанса Codeigniter – это просто файлы cookie? Ошибка: общие конфликты php55w с php-common на CentOS 6.5 Изменение порядка записей с передней стороны Пользователь должен просмотреть страницу перед просмотром Как добавить несколько случаев условий внутри метода Switch? Заголовок на странице PDF с использованием DOMPDF в PHP Авторизованные приложения GAE должны находиться в том же регионе, что и экземпляр базы данных | Google App engine Сообщение не получает автоматически для Telegram CHATBOT funciton с помощью PHP множественные действия с завиванием Получить местоположение из IP-адреса пользователя Обратная инженерия или автоматическое поколение сущностей в Laravel? Какой самый элегантный способ перестроить ассоциативный массив? Есть ли функция в Django / Python, похожая на PHP flush (), которая позволяет мне отправлять часть ответа HTTP клиентам?

APN php code дает предупреждение: stream_socket_client () : невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195

Я пытаюсь реализовать уведомление Apple Push, используя php-код. Вот мой код

$deviceToken = 'My device token'; $passphrase = ''; $message = 'My first push notification!'; //////////////////////////////////////////////////////////////////////////////// $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev-cert.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); $fp = stream_socket_client( 'ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 120, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) exit("Failed to connect: $err $errstr" . PHP_EOL); echo 'Connected to APNS' . PHP_EOL; $body['aps'] = array( 'alert' => $message, 'sound' => 'default' ); $payload = json_encode($body); $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivered' . PHP_EOL; else echo 'Message successfully delivered' . PHP_EOL; fclose($fp); 

Файл сертификата .pem находится в том же каталоге, что и файл. Этот код работает нормально на моей локальной машине. Я использую MAMP. Я получаю уведомление на своих устройствах.

Но когда я пытаюсь на сервере, он не работает и не дает ошибку.

Предупреждение: stream_socket_client () [function.stream-socket-client]: невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 (соединение отклонено) в / home / nextgen / public_html / ApplicationGenerator / sessionportal / iosapp / SimplePush / simplepush.php в строке 14 Не удалось подключиться: 111 Соединение отклонено

Если файл сертификата неверен, как он будет работать на моем локальном сервере?

Я не получаю от этого никакого выхода. Можете ли вы, ребята, помочь мне?

Предполагая, что ваш сервер имеет правильные порты, «Connection Refused» обычно указывает на недопустимый .PEM-файл или неверную кодовую фразу. Убедитесь, что при открытии файла .PEM заголовок выглядит примерно так:

 Bag Attributes friendlyName: Apple Development IOS Push Services: com.yourapp.app localKeyID: A8 77 BC 0C 2E 81 10 6E 78 9F XX XX XX XX XX XX 

subject = / UID = com.yourapp.app / CN = Apple Development IOS Push Services: com.yourapp.app/C=FR issuer = / C = US / O = Apple Inc./OU=Apple Всемирные отношения разработчиков / CN = Сертификационный центр по связям с общественностью Apple Worldwide

за которым следует ключ, за которым должен следовать заголовок, который выглядит так для вашего закрытого ключа:

 Bag Attributes friendlyName: Joe Black localKeyID: A8 77 BC 0C 2E 81 10 6E 78 9F XX XX XX XX XX XX XX XX Key Attributes: <No Attributes> 

Я предлагаю вам также удалить кодовую фразу, чтобы уменьшить потенциальные источники ошибок.