2013-08-30 3 views
3

J'essaie d'envoyer une notification push dans l'application iOS via php. Donc le développeur iOS me donne le fichier pem. J'ai demandé au serveur d'hébergement d'ouvrir gateway.sandbox.push.apple.com:2195 et ils ont ouvert le port. Mais quand j'essaye d'envoyer la notification de poussée, j'obtiens l'erreur suivante. Mon code ressembleLa connexion de notification push iOS a échoué

$deviceToken='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 

$passphrase=""; 

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', '/home/sitename/public_html/push/ck.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

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

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

echo 'Connected to APNS' . PHP_EOL; 

Obtenir l'erreur suivante

Failed to connect amarnew: 0 

J'ai donc essayé la connexion à Apple via telnet, ce résultat est

[email protected] [~]# telnet gateway.sandbox.push.apple.com 2195 
Trying XX.XXX.XXX.XX... 
Connected to gateway.sandbox.push.apple.com. 
Escape character is '^]'. 
^\q 
^] 
telnet> q 
Connection closed. 
[email protected] [~]# 

Comme je suis nouveau à cela, je juste coincé ici. S'il vous plaît quelqu'un me aider

Merci à l'avance

+0

Semble que votre fichier .pem de certificat/paire de clés est corrompu, régénérez-le. Je n'ai fait que travailler, alors je sais que c'est un sujet délicat. – Woodstock

Répondre

5

Sons comme votre certificat/paire de clés fichier .pem est corrompu, le régénérer. J'ai juste commencé à travailler moi-même, alors je sais que c'est un sujet délicat. Plutôt que de simplement utiliser telnet (ce qui prouve seulement que la connectivité est OK), exécutez plutôt cette commande à partir du terminal pour déterminer si le certificat et la clé sont valides.

openssl s_client -connect gateway.sandbox.push.apple.com:2195 
-cert cert.pem -key key.pem 

Vous devriez voir tout un tas de sortie, ce qui est OpenSSL vous permettant de savoir ce qui se passe sous le capot.

Si la connexion aboutit, vous devriez pouvoir taper quelques caractères. Lorsque vous appuyez sur Entrée, le serveur doit se déconnecter. Si un problème est survenu lors de l'établissement de la connexion, openssl vous enverra un message d'erreur mais vous devrez peut-être faire défiler la sortie pour la trouver. De toute façon, au moins, vous saurez si votre paire cert/clé est bonne.

En production, vous devez utiliser une paire cert/clé concaténée - Si vous ne possédez pas la clé et le certificat d'origine, vous devrez l'obtenir du développeur pour tester ce qui précède.

+1

thats it ... Ce fichier a été corrompu ... A fonctionné quand j'ai été créé – ramesh

+0

Content de vous aider! John – Woodstock

+0

Salut @John J'ai besoin de mettre en œuvre cette notification push dans le serveur Windows IIS. Je reçois une erreur fatale. Pouvez-vous s'il vous plaît jeter un oeil à ma question s'il vous plaît http://stackoverflow.com/questions/18560980/pushsharp-apple-notification-a-call-to-sspi-failed-error – ramesh