2013-10-16 1 views
7

Ich habe ein Skript mit stream_socket_client() entwickelt und es funktioniert auf meinem localhost, aber wenn ich versuche, es online zu verwenden (mit Fatcow.com Webhosting) wird es nicht funktionieren. Ich erhalte den folgenden Fehler:Wie werden Apple Push-Benachrichtigungen verwendet, wenn Port 2195 nicht verwendet werden kann?

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Connection refused) in .../send-notification.php on line 18 Failed to connect 111 Connection refused

Dies ist Zeile 18:

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

Ich weiß, dass das Passwort für die .pem-Datei korrekt ist. Die Frage wird, wenn ich diesen Port nicht benutzen kann, was mache ich? Gibt es einen kostenlosen Service, den ich nutzen kann? Ich weiß, dass Port 80 offen ist.

Ich habe gehört, dass die Verwendung der curl() Funktion funktioniert, aber bisher nicht erfolgreich war.

Ich würde wirklich schätzen, in die richtige Richtung gezeigt zu werden.

+0

Ich nehme an, es Provider ausgehende Verbindungen blockiert ist, oder auch Apples Server –

Antwort

8

Um die Benachrichtigungen an das Gerät zu senden, muss der 2195-Port in der Firewall aktiviert werden. Aus Sicherheitsgründen deaktivieren einige Organisationen diese Ports in der Firewall. Der Port 2196 wird für Feedback-Dienste verwendet und dieser Port sollte auch in der Firewall geöffnet werden. Ohne diese Ports zu öffnen, können Nachrichten nicht an APNS übermittelt werden.

+0

Wie diese öffnen Ports auf Amazon EC2 Server? –

0

versuchen Port 2196.

ich auch ähnliches Problem konfrontiert, auch mit cURL dieses Problem konfrontiert sein wird. Überprüfen Sie bei Ihrem Hosting-Provider, ob der ausgehende Port (2195,2196) geöffnet oder blockiert ist. Oder versuchen Sie Telnet ssl://gateway.sandbox.push.apple.com:2195
und überprüfen Sie, welche Antwort Sie erhalten. Wenn die Ports geöffnet sind, werden Sie verbunden.

0

Ich hatte das gleiche Problem mit meinem aktuellen Hosting-Provider. Sie könnten zu einem anderen Anbieter wechseln - oder - Einfach 'kaufen' ein Budget LAMP VPS (3 Euro/Monat). Und Sie sind gut zu gehen

0

in jedem Shared-Hosting deaktivieren sie 2195-Port für den Sie können diesen Port aktivieren, aber in den meisten Shared-Hosting-Unternehmen nicht diesen Port aktivieren, wenn Sie IOS Push-Benachrichtigung tun möchten Ich empfehle Ihnen, Virtual Private Server (VPS) zu verwenden, und Sie können IOS Push-Benachrichtigungen einfach konfigurieren.

3

ich folgendes glauben, was Sie für

$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); 

weitere Informationen suchen, können Sie hier: Apple push notification with cURL

+0

sind Sie '$ url = 'https: //gateway.sandbox.push.apple.com: 2195';' funktioniert, wenn '2195' blockiert ist? Das ist es, worüber wir hier diskutieren. – Ans

+0

@Ans Der OP erwähnt nie, dass der Port blockiert ist. Dies ist nur eine Annahme. Das OP sagt nur, dass es abgelehnt wird. –