ios notifications Push ne fonctionne pas sur le serveur
J'ai testé une notification push sur ma machine locale, il fonctionne parfaitement. J'ai ensuite téléchargé mes fichiers vers le serveur réel avec le même certificat (".pem" fichier), et je vous assurer que les ports 2195 et 2196 sont ouverts.
J'ai testé:
telnet gateway.sandbox.push.apple.com 2195
Qu'il travaille...
root@server ~ # telnet gateway.sandbox.push.apple.com 2195
Trying 17.149.34.54...
Connected to gateway.sandbox.push.apple.com.
Escape character is '^]'.
Mais quand je test à partir de mon script php, il retourne:
Avertissement: stream_socket_client() [function.stream-socket-client]:
impossible de se connecter à ssl://passerelle.bac à sable.push.apple.com:2195
(Connection timed out)Avertissement: stream_socket_client() [function.stream-socket-client]:
impossible de se connecter à ssl://feedback.bac à sable.push.apple.com:2196
Des suggestions?
C'est le code php:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert',
"path/to/certificate");
$fp = stream_socket_client("ssl://gateway.push.apple.com:2195",
$error, $errorString, 100,
(STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT), $ctx);
$ctx = fonction stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', "chemin/vers/le certificat"); $fp = stream_socket_client("chemin/vers/le certificat", $erreur, $errorString, 100, (STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT), $ctx);
Il est préférable de l'ajouter à votre question, il suffit de modifier.
j'ai ajouté le bon code php dans la question
OriginalL'auteur yasserislam | 2012-01-24
Vous devez vous connecter pour publier un commentaire.
Ce code fonctionne très bien:
Seulement de vérifier la pem chemin d'accès au fichier, et le port est sur.
OriginalL'auteur bhupendra
J'ai eu le même problème de réception " impossible de se connecter à ... (Connection timed out)'. Je peux me connecter à partir de mon ordinateur à la maison, mais je ne peux pas à partir du serveur d'hébergement.
Dans mon cas, le port 2195 et 2196 n'étaient pas simplement ouvrir à partir du serveur d'hébergement. J'ai eu à contacter le support technique pour ouvrir ces ports. Ping peut fonctionner, car il utilise le numéro de port différent. Donc, merci de contacter votre service d'hébergement de l'entreprise pour s'assurer que les ports sont ouverts.
Bonne chance,
Kaz
OriginalL'auteur Kaz Yoshikawa
Dans le
stream_socket_client
fonction, vous ne devez pas passer le chemin de certificat, mais l'APN url.Cette méthode ouvre une connexion et renvoie:
Une fois que vous avez construit votre apn message, vous pouvez le pousser à l'aide de la suite de
Vous pouvez suivre ce tutoriel http://goo.gl/9Q0u si votre objectif est de mettre en place votre propre notification push API.
Il y a aussi des bibliothèques php existantes:
Et une très bonne bibliothèque Java (je l'utilise actuellement pour massive pousse):
Pouvez-vous l'essayer sans STREAM_CLIENT_PERSISTENT
mêmes résultats...
OriginalL'auteur pgratton
Vous devez configurer votre pare-feu pour permettre à tous les 17.0.0.0/8 bloc (il appartient à Apple!). Vérifier CETTE RÉPONSE
Et selon Apple:
Si vous utilisez CSF pare-feu (comme moi), je vous recommande d'ajouter cette ligne à la csf.permettre de fichier:
tcp|out|d=2195|d=17.0.0.0/8
À l'aide de ces questions, au lieu de simplement "17.0.0.0/8" vous permet de outbond connexions à Apple et plus précisément à port 2195. La NSA ne l'aime, mais c'est beaucoup plus précis et sûr! 😉
OriginalL'auteur Heitor