У меня возникли проблемы с использованием APNS с PHP и получением следующего сообщения:
stream_socket_client(): Failed to enable crypto
Проблема возникает только иногда, и в других случаях она действительно посылает push.
Поскольку у меня есть тестовый скрипт в цикле из 10 итераций, я иногда получаю это:
stream_socket_client(): SSL: Connection reset by peer
Я тестирую использование сервера песочницы tls://gateway.sandbox.push.apple.com:2195
Вот что я пробовал:
sslv3://
и tls://
. 644
755
Похоже, что все решения, которые я нашел в Google и SO, – это люди, у которых проблемы с проблемой вообще.
Я чувствую, что услуга ограничена ставкой, может быть? Поскольку мы ждали некоторое время (около 15 минут), а затем снова попробовали его и смогли успешно нажать около 100 сообщений, пока я не начал получать это сообщение снова.
Функция push sandbox ограничена скоростью. Я сам испытал это при тестировании, но никогда не сталкивался с такими ограничениями, используя API-интерфейс для производства.
Возможно, вы также столкнетесь с их другими защитами.
Открываете ли вы соединение, отправляете сообщение, закрываете соединение, а затем зацикливаете и делаете это снова и снова?
Это приведет к тому, что ваши уведомления будут удалены. Apple хочет, чтобы вы отправляли несколько push-уведомлений с использованием одного и того же соединения, а не нового.
Рекомендации по управлению подключениями
Вы можете установить несколько подключений к одному шлюзу или нескольким экземплярам шлюза. Если вам нужно отправить большое количество удаленных уведомлений, распространите их по соединениям с несколькими разными шлюзами. Это повышает производительность по сравнению с использованием одного соединения: оно позволяет быстрее отправлять удаленные уведомления и позволяет APN быстрее доставлять их.
Хранить соединения с APN в нескольких уведомлениях; не многократно открывайте и закрывайте соединения. APN рассматривает быстрое соединение и разъединение как атаку отказа в обслуживании. Вы должны оставить соединение открытым, если не знаете, что он будет простаивать в течение длительного периода времени, например, если вы только отправляете уведомления своим пользователям один раз в день, нормально использовать новое соединение каждый день.
Из Apple Docs @ https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html
Мой PHP-код генерировал следующую ошибку:
PHP Warning: stream_socket_client(): Failed to enable crypto in /private/tmp/t.php on line 12 PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /private/tmp/t.php on line 12 PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /private/tmp/t.php on line 24
Проблема была, проклятый сертификат, истек позавчера! 🙂 Ты можешь поверить в это?
Итак, мне нужно воссоздать мой файл PEM.
Нет необходимости обновлять ваш файл pem
эта ошибка возникает, когда вы используете неверный PassPhrase
приветствует Эмилиано
У меня была эта проблема. Исчезнул после предоставления разрешения на запись для «всех» для файла .pem.
У меня есть эта проблема, потому что я глупо забыл включить расширение файла (.pem) при поставке пути к файлу для local_cert.
несколько проверок :
spaces
и без <
или >
В моем случае проблема была в моем mac (OSX Sierra). Я загрузил php и cert на свой сервер, запустил его, и уведомление было доставлено.