J'ai du mal à utiliser APNS avec PHP et à recevoir le message suivant:
stream_socket_client(): Failed to enable crypto
Le problème ne se produit que parfois, et d'autres fois, il enverrait en fait le Push.
Comme j'ai le script de test sur une boucle de 10 itérations, j'obtiens parfois ceci:
stream_socket_client(): SSL: Connection reset by peer
Je teste en utilisant le serveur sandbox tls://gateway.sandbox.Push.Apple.com:2195
Voici ce que j'ai essayé:
sslv3://
et tls://
.644
755
Il semble que toutes les solutions que j'ai trouvées sur Google et SO sont des gens qui ont du mal à pousser complètement.
J'ai l'impression que le service est à tarif limité peut-être? Parce que nous avons attendu un certain temps (environ 15 minutes), puis nous l'avons réessayé, et nous avons réussi à transmettre environ 100 messages jusqu'à ce que je recommence à recevoir ce message.
Le service Push bac à sable est à tarif limité. J'ai vécu cela moi-même lors des tests, mais je n'ai jamais rencontré une telle limite en utilisant l'API de production.
Vous pourriez également toucher leurs autres protections.
Êtes-vous en train d'ouvrir une connexion, d'envoyer un message, de fermer la connexion, puis de boucler et de recommencer?
Vos notifications seront alors supprimées. Apple veut que vous envoyiez plusieurs notifications Push en utilisant la même connexion, pas une nouvelle à chaque fois.
Meilleures pratiques pour la gestion des connexions
Vous pouvez établir plusieurs connexions à la même passerelle ou à plusieurs instances de passerelle. Si vous devez envoyer un grand nombre de notifications à distance, répartissez-les sur des connexions à plusieurs passerelles différentes. Cela améliore les performances par rapport à l'utilisation d'une seule connexion: il vous permet d'envoyer les notifications à distance plus rapidement, et il permet aux APN de les livrer plus rapidement.
Gardez vos connexions avec les APN ouvertes sur plusieurs notifications; n'ouvrez et ne fermez pas les connexions à plusieurs reprises. Les APN traitent la connexion et la déconnexion rapides comme une attaque par déni de service. Vous devez laisser une connexion ouverte à moins que vous ne sachiez qu'elle sera inactive pendant une période prolongée, par exemple, si vous envoyer des notifications à vos utilisateurs une fois par jour, il est possible d'utiliser une nouvelle connexion chaque jour.
De Apple Docs @ https://developer.Apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html
Mon PHP générait l'erreur suivante:
PHP Warning: stream_socket_client(): Failed to enable crypto in /private/tmp/t.php on line 12
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.Push.Apple.com:2195 (Unknown error) in /private/tmp/t.php on line 12
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /private/tmp/t.php on line 24
Le problème était que le putain de certificat avait expiré avant-hier! :-) Pouvez-vous croire cela?
J'ai donc besoin de recréer mon fichier PEM.
Il n'est pas nécessaire de recréer votre fichier pem
cette erreur se produit lorsque vous utilisez un PassPhrase incorrect
en ce qui concerne Emiliano
J'ai ce problème parce que j'ai bêtement oublié d'inclure l'extension de fichier (.pem) lors de la fourniture du chemin de fichier pour local_cert.
Dans mon cas, le problème était avec mon mac (OSX Sierra). J'ai téléchargé php et cert sur mon serveur, l'ai exécuté et la notification a été envoyée.
quelques vérifications:
spaces
et sans <
ou >
J'ai eu ce problème. Disparu après avoir accordé une autorisation d'écriture à "tout le monde" pour le fichier .pem.