Как использовать Apple Push-уведомления, если вы не можете использовать порт 2195?
Я разработал скрипт, используя stream_socket_client()
и он работает на моем localhost, но когда я пытаюсь использовать его в интернете (с Fatcow.com веб-хостинг) это не сработает. Я получаю следующую ошибку:
предупреждение: функции stream_socket_client() [функция.stream-socket-client]: невозможно подключиться к ssl: / / gateway.песочница.толкай.яблоко.com: 2195 (Соединение отказано) в .../отправка уведомлений.в PHP on line 18 Не удалось подключиться 111 Соединение отказано
это строка 18:
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
Я знаю, что пароль для .файл PEM является правильным. Возникает вопрос: если я не могу использовать этот порт, что мне делать? Есть ли какие-либо бесплатные услуги, которые я могу использовать? Я знаю, что порт 80 открыт.
Я слышал, что с помощью curl()
функция будет работать, но пока безуспешно.
Я был бы очень признателен, если бы меня указали в правильном направлении.
5 ответов
для отправки уведомлений на устройство необходимо включить порт 2195 в брандмауэре. По соображениям безопасности некоторые организации отключают эти порты в брандмауэре. Порт 2196 используется для служб обратной связи, и этот порт также должен открываться в брандмауэре. Без открытия этих портов сообщения не могут доставляться в APNS.
Я считаю, следующее-Это то, что вы ищете
$url = 'https://gateway.sandbox.push.apple.com:2195';
$cert = 'AppCert.pem';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSLCERT, $cert);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "passphrase");
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"device_tokens": ["458e5939b2xxxxxxxxxxx3"], "aps": {"alert": "test message one!"}}');
$curl_scraped_page = curl_exec($ch);
более подробную информацию можно найти здесь: Apple push-уведомление с завитком
попробуйте использовать порт 2196.
Я также столкнулся с подобной проблемой, даже с cURL вы столкнетесь с этой проблемой. Дважды проверьте у вашего хостинг-провайдера, открыт ли или заблокирован исходящий порт (2195,2196).
Или попробуйте telnet ssl://gateway.sandbox.push.apple.com:2195
и проверить, какой ответ вы получите. Если порты открыты, вы будете подключены.
У меня была такая же проблема с моим текущим хостинг-провайдером. Вы можете переключиться на другого провайдера - или - Просто "купите" бюджетную лампу VPS (3 евро/месяц). И вы хорошо идти
в каждом общем хостинге они отключают порт 2195 для этого вы можете запросить, чтобы включить этот порт, но в большинстве компаний общего хостинга не включите этот порт, поэтому, если вы хотите сделать iOS push-уведомление, я рекомендовал вам использовать Virtual Private Server (VPS), и вы можете легко настроить iOS push-уведомление.