Кошелек проходит push-уведомления APNs - PullRequest
0 голосов
/ 14 октября 2019

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

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

Это журнал, который я получаю от жадности с моей лучшей попыткой.

  • Попытка 17.188.136.150:443. .. * TCP_NODELAY set * Подключен к порту api.push.apple.com (17.188.136.150) 443 (# 0) * ALPN, предлагая h2 * ALPN, предлагая http / 1.1 * успешно настроенные места проверки сертификатов: * CAfile: / usr/local/etc/openssl/cert.pem CApath: /usr/local/etc/openssl@1.1/certs * SSL-соединение с использованием TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * ALPN, сервер принят для использования h2 * Сертификат сервера *: * тема: CN = api.push.apple.com;OU = управление: idms.group.533599;O = Apple Inc .;ST = Калифорния;C = US * дата начала: 14 марта 17:50:10 2019 GMT * дата истечения срока: 12 апреля 17:50:10 2021 GMT * subjectAltName: host "api.push.apple.com" соответствует сертификату "api.push.apple".com "* эмитент: CN = Apple IST CA 2 - G1;OU = центр сертификации;O = Apple Inc .;C = US * SSL-сертификат подтвердите. * Используя HTTP2, сервер поддерживает многоцелевое использование * Состояние соединения изменено (подтверждено HTTP / 2) * Копирование данных HTTP / 2 в потоковом буфере в буфер соединений после обновления: len = 0 * Не удалось отправить запрос HTTP POST * Соединение № 0 к хост-интерфейсу API.push.apple.com остался без изменений

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

$client = new Client();
  try {
    $result = $client->post('https://api.push.apple.com:443', [
    'headers' => ['apns-id' => <pass_type_id> , ':path' => '/3/device/<device_id_received_upon_registration>'],
    'json' => ['apns'=>''],
    'debug'=>true,
    'version'=>2.0,
    'ssl_key'   => [<path_to_key>, <key_password>],
    'cert'      => [<path_to_certificate (same one used for signing pass)>, <certificate_password>]]);
    }
    catch (GuzzleHttp\Exception\ClientException $e) {
        dd($e);
    }

Я действительно потерян с этим. Пожалуйста, помогите мне. Я также попытался подключиться к порту 1295 с другим вставленным копированием кода, но он не работал должным образом, и мне было еще сложнее отлаживать его, так как я больше знаком с портом 443.

...