Push-уведомление не работает, ошибка в терминале, пока я тестирую в терминале

    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', "pushNEWPEM12.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 (empty($fp))
        exit("Failed to connect: $err $errstr" . PHP_EOL);
    // Create the payload body
    $body['aps'] = array(
        'alert' => array(
            'title' => 'Together',
            'body' => $offer_title,
            "content-available" => 1
         ),
        'sound' => 'default'
    );
    // Encode the payload as JSON
    $payload = json_encode($body);
    // Build the binary notification
    $msg = chr(0) . pack('n', 32) . pack('H*', $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);
    if (!$result)
        return 'Message not delivered' . PHP_EOL;
    else
        return 'Message successfully delivered' . PHP_EOL;
        }

//ошибка в терминале есть

Mac-mini:PushNotification vol$ php simplepush.php

Предупреждение: stream_socket_client(): операция SSL завершилась неудачно с кодом 1. Сообщения об ошибках OpenSSL: ошибка: 14090086: процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: ошибка проверки сертификата в /Users/vol/Desktop/PushNotification/simplepush.php в строке 21

Предупреждение: stream_socket_client(): не удалось включить криптографию в /Users/vol/Desktop/PushNotification/simplepush.php в строке 21.

Предупреждение: stream_socket_client(): невозможно подключиться к ssl://gateway.sandbox.push.apple.com:2195 (Неизвестная ошибка) в /Users/vol/Desktop/PushNotification/simplepush.php в строке 21 Не удалось подключиться: 0 Vol-Mac-mini:PushNotification vol$

«Я работаю с push-уведомлениями. Если я использую профиль сертификата/предоставления разработчика и тестирую в терминале, он показывает такую ​​​​ошибку.


person Loki    schedule 16.02.2017    source источник
comment
покажи свой пхп код   -  person Anbu.Karthik    schedule 16.02.2017
comment
Для работы в продакшене вам нужно внести только два изменения: изменить URL-адрес на рабочий URL-адрес и изменить .pem-файл активных учетных данных.   -  person Bhavin    schedule 16.02.2017
comment
@Bhavin Не могли бы вы объяснить свой ответ.   -  person Loki    schedule 17.02.2017
comment
@Loki - ваш файл .pem предназначен для производства или разработки   -  person Anbu.Karthik    schedule 17.02.2017
comment
еще одна вещь, производственный APNS, мы не можем проверить, adhoc мы можем проверить, производственный APNS работает только после выхода в эфир   -  person Anbu.Karthik    schedule 17.02.2017
comment
@ Anbu.Karthik Можем ли мы проверить это с помощью сборки testflight? А мой php скрипт в порядке или нет подскажите.   -  person Loki    schedule 17.02.2017
comment
php правильный, проверьте, как только ваш файл pem будет запущен или нет   -  person Anbu.Karthik    schedule 17.02.2017
comment
@ Anbu.Karthik Я создал производственный файл pem, но это не сработало. Не могли бы вы поделиться ссылкой на создание производственного pem.   -  person Loki    schedule 17.02.2017


Ответы (1)


Есть три случая, которые вы можете проверить на своем конце: -

1) Убедитесь, что вы использовали правильный производственный сертификат на стороне сервера. Так как нам нужно создать два разных сертификата для производства и песочницы. Убедитесь, что вы используете правильный сертификат на сервере.

2) Вы можете проверить, что вы использовали правильный шлюз и номер порта на стороне сервера. Поскольку шлюз для производства и песочницы — это разные вещи. Шлюз, используемый для производства: - gateway.push.apple.com. а также вы используете правильный пароль на сервере для своего сертификата, который вы использовали на своем сервере.

3) Вы можете проверить, включено ли уведомление на вашем устройстве. Вам также необходимо включить его на вашем iPhone. Убедитесь, что это на вашем устройстве.

Дайте мне знать, если это работает для вас.

person Zalak Patel    schedule 16.02.2017