APN-php-Code, der Warnung ausgibt: stream_socket_client() [function.stream-socket-client]: keine Verbindung zu ssl://gateway.sandbox.push.apple.com:2195

Lesezeit: 2 Minuten

APN php Code der Warnung ausgibt stream socket client functionstream socket client keine Verbindung zu
Subodh Ghulaxe

Ich versuche, Apple Push Notification mit PHP-Code zu implementieren. Hier ist mein Code

$deviceToken = 'My device token';
$passphrase="";
$message="My first push notification!";

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev-cert.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err,
    $errstr, 120, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
    );
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
    echo 'Message not delivered' . PHP_EOL;
else
    echo 'Message successfully delivered' . PHP_EOL;

fclose($fp);

Die .pem-Zertifikatsdatei befindet sich im selben Verzeichnis wie die Datei. Dieser Code läuft auf meinem lokalen Computer einwandfrei. Ich verwende MAMP. Ich erhalte eine Benachrichtigung auf meinen Geräten.

Aber wenn ich es auf dem Server versuche, funktioniert es nicht und gibt einen Fehler aus.

Warnung: stream_socket_client() [function.stream-socket-client]: keine Verbindung zu ssl://gateway.sandbox.push.apple.com:2195 (Verbindung abgelehnt) in /home/nextgen/public_html/ApplicationGenerator/appointmentportal/iosapp/SimplePush/simplepush.php auf Zeile 14 fehlgeschlagen: 111 Verbindung abgelehnt

Wenn die Zertifikatsdatei falsch ist, wie würde sie auf meinem lokalen Server funktionieren?

Ich komm da nicht raus. Könnt ihr mir helfen?

  • Ich glaube, Sie sollten dies durchgehen: stackoverflow.com/a/16274256/362310

    – Vaibhav Saran

    29. Apr. ’13 um 8:32

  • ist dein Problem gelöst?

    – Rajneesh071

    15. Juni ’13 um 10:03

Vorausgesetzt, Ihr Server hat die richtigen Ports geöffnet, weist “Connection Refused” normalerweise auf eine ungültige .PEM-Datei oder eine falsche Passphrase hin. Stellen Sie sicher, dass der Header beim Öffnen der .PEM-Datei etwa so aussieht:

Bag Attributes
friendlyName: Apple Development IOS Push Services: com.yourapp.app
localKeyID: A8 77 BC 0C 2E 81 10 6E 78 9F XX XX XX XX XX XX

subject=/UID=com.yourapp.app/CN=Apple Development IOS Push Services: com.yourapp.app/C=FR issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN= Apple Worldwide Developer Relations Certification Authority

gefolgt von einem Schlüssel, dem dann ein Header folgen sollte, der für Ihren privaten Schlüssel wie folgt aussieht:

Bag Attributes
friendlyName: Joe Black
localKeyID: A8 77 BC 0C 2E 81 10 6E 78 9F XX XX XX XX XX XX XX XX
Key Attributes: <No Attributes>

Ich schlage vor, dass Sie auch die Passphrase entfernen, um potenzielle Fehlerquellen zu reduzieren.

.

221860cookie-checkAPN-php-Code, der Warnung ausgibt: stream_socket_client() [function.stream-socket-client]: keine Verbindung zu ssl://gateway.sandbox.push.apple.com:2195

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy