2009-09-18 8 views
5

Wenn ich versuche Push-Benachrichtigungen zu senden bekomme ich diesen Fehler: "Verbindung abgelehnt", aber ich weiß nicht warum ... Ich habe meine Apns-Dev hochgeladen. pem im selben Verzeichnis wie auch im root-Verzeichnis, aber das wird auch nicht funktionieren.Push-Benachrichtigungen (iPhone) geben "111 Connection refused"

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

Weiß jemand, was ich falsch mache? Wenn ich die Passphrase entferne und sie nicht sende, funktioniert sie auch nicht ...

Antwort

2

Sie möchten keine Passphrase, es sei denn, Ihre .pem-Datei benötigt eine Passphrase. Für die Verbindung muss die Peer-Überprüfung (Option verify_peer) aktiviert sein. Stellen Sie außerdem sicher, dass $ apnsCert der gültige Pfad zum Zertifikat ist. Sie können einen absoluten Pfad als Plausibilitätsprüfung verwenden.

Schließlich sollte dies Ihre Verbindungsfähigkeit nicht beeinträchtigen, aber Ihr Geräte-Token muss gültig sein.

+0

Wirklich danke, ich werde prüfen, ob das funktioniert. Meinst du den ftp-Pfad (/public-html/directory/file.pem) oder (http://www.server.com/directory/file.pem) durch absoluten Pfad? Ich bekomme diesen Fehler, bevor ich irgendwelche Daten sende, also ist es nicht das Gerät-Token, denke ich ... Dank: D! – elslooo

+0

Es funktioniert nicht: (..., unten ist meine Antwort, um diesen Fehler zu verhindern. – elslooo

0

Ich weiß, dass ich Fehler behoben, indem Sie diesen: STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT

weiß, ich bin keine Fehler bekommen, aber ich erhalte keine Benachrichtigung. Ich denke, das Dev-Token ist nicht gültig, weiß also, so sieht es aus wie

Nummern Nummern Nummern Nummern Nummern Nummern Nummern.

Die Leerzeichen werden in dieser Zeile entfernt: $ apnsMessage = chr (0). chr (0). Chr (32). pack ('H *', str_replace ('', '', $ deviceToken)). chr (0). chr (strlen ($ Nutzlast)). $ Nutzlast;

Edit: Ich habe das Problem gegründet: Mein Server ist der Ausgang-Port verweigern, einfach eine Mail geschickt, in der Hoffnung sie es ...

6

aktivieren Stellen Sie sicher, 2195 der abgehend Port open.This würde Sei in deiner Firewall-Konfiguration.

+0

Ja, das war eigentlich das Problem. Vielen Dank für die Hilfe. :) – elslooo

Verwandte Themen