Push-уведомления PHP для iOS (APNS)

Я использую PHP, чтобы попытаться отправить push-уведомление моему приложению iOS. Мой push-код выглядит так:

<?php
 
 $title = "Notification";
 $message=array();
 $message['text'] = "Message";
 $message['id']=1;
 $to='695D55573361DB9948D09AB43EA1548A9AAECB4D23F7D836BD7F88FA94ABBE5E';
 echo $to.PHP_EOL;
 sendPushAPN($to,$title,$message);

 function sendPushAPN($to,$title,$message)
 {
     $to=str_replace(" ","",$to);
     // Put your device token here (without spaces):
     $deviceToken=$to;

     // Put your private key's passphrase here:
     $passphrase = 'abc';

     $ctx = stream_context_create();
     stream_context_set_option($ctx, 'ssl', 'local_cert', 'aps.pem');

     stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
     // Open a connection to the APNS server
     
     $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
     
     if (!$fp) exit("Failed to connect: $err $errstr" . PHP_EOL);
     echo 'Connected to APNS' . PHP_EOL;
     // Create the payload body
     // codi existent //$body['aps'] = array('alert' => "ole.. alex",'sound'=> 'default','push_type' => 'alert');
     $body['aps']=array('alert' => array('title' => 'Notificacion','body' => 'Ok Alex'),'sound' => 'default');
     $payload = json_encode($body);
     // Build the binary notification
     $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
     // $msg = pack("C", 1) . pack("N","alert") . pack("N",$deviceToken) . pack("N", $apple_expiry) . pack("n", 32) . pack('H*', str_replace(' ', '', $deviceToken'])) . pack("n", strlen($payload)) . $payload;


     // Send it to the server
     $result = fwrite($fp, $msg, strlen($msg));
     // Close the connection to the server
     fclose($fp);
     echo 'Result:' . $result . PHP_EOL;
 }
?>

Но мой вывод всегда выглядит одинаково:

Подключено к АПНС Результат:114

и push-уведомление никогда не приходит. Что означает код 114? Есть ли способ получить больше информации о том, что происходит? Или, может быть, я просто использую неправильный способ отправки push-уведомлений?

Функция fwrite возвращает количество записанных байтов, которое в данном случае равно 114.

Chris Haas 08.11.2022 14:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код использует устаревший двоичный API для APNS.

Это больше не поддерживается.

Вам необходимо использовать HTTP/2 API.

Быстрый поиск в Интернете показывает, что существует несколько различных библиотек PHP, которые могут предоставить это, а также пример кода.

Ты прав. Я был сбит с толку, так как мой код выше работал в старом приложении, но не в новом. На всякий случай, если кому-то это понадобится, этот туториал очень помог!

dembo 10.11.2022 09:03

Другие вопросы по теме