Push-уведомления (iPhone) дают "111 Соединение отказано" - PullRequest
5 голосов
/ 18 сентября 2009

Когда я пытаюсь отправить Push-уведомления, я получаю эту ошибку: «Отказано в соединении», но я не знаю, почему ... Я загрузил свой apns-dev.pem в ту же директорию в корневой каталог, но это тоже не сработает.

<?php
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$apnsPass = 'secret';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $apnsPass);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);

if (!$apns) {
    echo "Error: $errorString ($error)";
}

// Do this for each
$deviceToken = '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000';
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
// End do

socket_close($apns);
fclose($apns);
?>

Кто-нибудь знает, что я делаю не так? Когда я удаляю фразу-пароль и не отправляю ее, она тоже не работает ...

Ответы [ 3 ]

7 голосов
/ 07 июня 2012

Убедитесь, что исходящий порт 2195 открыт. Это будет в вашей конфигурации брандмауэра.

2 голосов
/ 08 октября 2009

Вам не нужна фраза-пароль, если она не требуется для вашего файла .pem. Соединение требует одноранговой проверки (опция verify_peer) включена. Также убедитесь, что $ apnsCert является допустимым путем к сертификату, вы можете использовать абсолютный путь в качестве проверки работоспособности.

Наконец, это не должно влиять на вашу способность подключаться, но ваш токен устройства должен быть действительным.

0 голосов
/ 09 октября 2009

Я знаю, исправил эту ошибку, добавив следующее: STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT

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

цифры цифры цифры номера цифры номера цифры номера.

Пробелы удалены в этой строке: $ apnsMessage = chr (0). chr (0). chr (32). pack ('H *', str_replace ('', '', $ deviceToken)). chr (0). chr (strlen ($ payload)). $ Полезной нагрузки;

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

...