Nouvelle API Provider APNS et PHP
J'ai commencé à créer un code basé sur cette pour envoyer des notifications push à partir de PHP.
Mais maintenant que j'ai compris il y a une nouvelle API qui utilise le protocole HTTP/2 et fournit de la rétroaction dans la réponse, je suis à essayer de comprendre ce que je dois faire pour ce retour.
Je n'ai pas été en mesure de trouver des tutoriels ou des exemples de code pour me donner du sens (je suppose parce que c'est nouveau).
Est-il possible d'utiliser le stream_socket_client()
méthode de connexion à l'APN avec le nouveau fournisseur de l'API? Comment puis-je obtenir de la rétroaction? Tout ce que je revienne de fwrite($fp, $msg, strlen($msg))
droit maintenant, c'est un nombre. Pour toutes fins utiles, vous pouvez envisager de mon code le même que le code de la DONC, la question j'ai basé mon code
Merci!
source d'informationauteur Ben Holness
Vous devez vous connecter pour publier un commentaire.
Avec le nouveau protocole HTTP/2 APN fournisseur d'API, vous pouvez utiliser curl pour envoyer des notifications push.
MODIFIER
Avant de continuer (comme indiqué par @Madox), openssl >= 1.0.2 e doit être installé (à partir du package de préférence). Vérifiez avec la commande
a) Votre version de PHP doit être >= 5.5.24 de sorte que la constante de CURL_HTTP_VERSION_2_0 est défini.
b) assurez-vous que vous avez curl version 7.46+ installé dans votre système avec
c) Boucle doit avoir http/2 est activé. Dans le résultat lors de la saisie de la commande précédente, vous devriez voir une ligne de ce genre:
si HTTP2 ne s'affiche pas, vous pouvez suivre cet excellent tutoriel pour installer http/2 pour curl https://serversforhackers.com/video/curl-with-http2-support
Vérifier que curl détecté openssl >= 1.0.2 e, faire du curl --version devrait afficher quelque chose comme ceci:
e) une Fois que vous avez tout installé, vous pouvez le tester dans la ligne de commande:
f) Voici un exemple de code PHP que je l'ai essayé:
Je tiens à ajouter quelques informations à tiempor3al réponse.
1) boucle doit être compilé avec une version d'openssl >=1.0.2 à soutenir pleinement le protocole http/2. - Je recevoir "?@@?HTTP/2 client préface chaîne manquant ou endommagé..." erreur lorsque j'ai compilé avec CentOS stock openssl-1.0.1 e.
2) si votre version de php du module mod_curl.donc compilé sans CURL_HTTP_VERSION_2_0 constante, vous pouvez le remplacer avec le nombre entier 3:
curl_setopt($ch, CURLOPT_HTTP_VERSION, 3);
Je pouvais envoyer des push via HTTP2 à l'aide de php CURL et lire les commentaires directement dans le corps de la réponse (ici, j'ai écrit un petit tutoriel sur la façon de le faire: L'envoi de notifications Push avec HTTP2 (et PHP)).
Je pense que vous pouvez vérifier le corps de la réponse de la lecture à partir de la prise (je ne me souviens pas exactement de la fonction php, peut-être "fgets").
Je suis sous CentOS 6 et la façon de les résoudre est pour l'installer à partir des sources de l'enroulement et OpenSSL.
Il peut sembler très simple, mais il m'a fallu 3 jours pour trouver la bonne configuration pour les paquets, donc je pense que je peux aider quelqu'un en affichant ce que j'ai fait ici.
Il s'est avéré un peu difficile pour moi puisque je ne suis pas utilisé pour installer des paquets à partir des sources, mais je peux maintenant vous connecter à l'Apn à l'aide de HTTPS sur le HTTP/2.
Les détails de ce que j'ai fait est là:
Télécharger et décompresser le roulage et OpenSSL:
Configurer OpenSSL avec les options suivantes (je ne suis pas sûr de ce qu'ils font, mais ce qui a fonctionné pour moi):
faire et installer OpenSSL
Configurer cURL avec l'indicateur suivant:
Faire et installer cURL
ensemble LD_LIBRARY_PATH /usr/local/ssl/lib/
Test
Le résultat:
Comme vous pouvez le voir, je me suis débarrassé de la vilaine
Suivez ce guide [http://cloudfields.net/blog/ios-push-notifications-encryption/%5D%5B1%5D de générer et de fusion de votre certificat et la clé privée.
Une fois que vous fusionnez et votre sslcert et pkey comme décrit dans le guide avec les mêmes noms de fichier, essayez la commande curl ci-dessous.
Pour résoudre
HTTP/2 client preface string missing or corrupt
erreurs en PHP 5.6, j'ai créé un Apache et CLI PHP Docker image que vous souhaitez compter sur, ou il suffit de regarder ce que j'ai fait dans le Dockerfile de construire votre propre. La même chose peut probablement s'appliquer à la version 7.0, bien que je n'ai pas essayé.oui, c'est possible: