Pré requis serveur pour envoyer des push notifications

LeChatNoirLeChatNoir Membre, Modérateur

Salut,


 


J'envisage d'utiliser des notifications push pour alerter mes utilisateurs de la publication d'un nouveau topo (je prends mon exemple concret car c'est un cas simple et clair).


 


J'ai lu sur les différents tuto qu'un serveur mutualisé ne permettait en général pas de le faire car le serveur doit pouvoir exécuter des scripts en tâche de fond et un certificat SSL...


 


Est-ce une réalité ?


 


D'autre part, les exemple que j'ai trouvé utilisent les tockens pour envoyer des notifications. Est ce que ça signifie que je dois stocker chaque tocken chaque fois qu'un device autorise les notifications ?


 


Bon, vous l'aurez compris, j'en suis encore aux balbutiements.


Je n'attends pas une formation de votre part mais au moins un éclaircissement sur le premier point : un serveur mutualisé peut il faire l'affaire ?


 


Merci :)


Réponses

  • CéroceCéroce Membre, Modérateur
    mars 2015 modifié #2

    J'ai lu sur les différents tuto qu'un serveur mutualisé ne permettait en général pas de le faire car le serveur doit pouvoir exécuter des scripts en tâche de fond et un certificat SSL...
    Est-ce une réalité ?

    Oui.
    En particulier, il faut installer un certificat sur le serveur pour qu'il signe les notifications. C'est une sécurité pour empêcher qu'un serveur qui n'est pas le tien spamme tes utilisateurs.
     

    D'autre part, les exemple que j'ai trouvé utilisent les tokens pour envoyer des notifications. Est ce que ça signifie que je dois stocker chaque token chaque fois qu'un device autorise les notifications ?

    Oui. Le token sert à  identifier le terminal iOS.

    Si tout ça t'embête, il existe des services qui peuvent faire ça pour toi.
  • Il faut demander à  ton hébergeur d'ouvrir les ports demandés par Apple. Y'en a 2, un pour le test, un autre pour la production.


     


    Pour les tokens, effectivement tu dois les récupérer du device, accessoirement même quasi obligatoire de récupérer l'identifiant unique du téléphone pour les stocker quelque part sur ton serveur. Ensuite, ce device token va te permettre d'envoyer les push notif.


     


    Pour l'identifiant unique ? Parce que le device token peut changer. Tu dois donc checker si le device token change auquel cas tu changes également sur ton serveur la donnée.


     


    Apple conseille aussi de récupérer les devices token inutilisés tous les jours. 


  • LeChatNoirLeChatNoir Membre, Modérateur

    ok merci.


     


    C'est pas simple effectivement... Ca aurait été bien qu'ils permettent de faire ça simplement à  travers iTunes Connect...


     


    Je vais creuser la question. J'ai trouvé ça qui a l'air de dégrossir la chose : http://www.easyapns.com


     


    Je vous dirai si je l'utilise.


  • FKDEVFKDEV Membre
    mars 2015 modifié #5


     


    J'ai lu sur les différents tuto qu'un serveur mutualisé ne permettait en général pas de le faire car le serveur doit pouvoir exécuter des scripts en tâche de fond et un certificat SSL...


     


    Est-ce une réalité ?




     


    Non.


    Sur easyapns, le script en tâche de fond sert à  envoyer 1 message par minute vers le serveur d'Apple, mais en fait tu peux bourriner d'après ce post:


    http://stackoverflow.com/questions/6421252/apple-push-notification-limitation


     


    Donc pas besoin de cron, tu executes ton script php qui envoie toutes tes notifs (t'as pas des millions d'users ?) d'un seul coup à  partir de ton browser quand tu as un message à  envoyer et basta. A la limite tu risques un timeout php avant la fin de l'envoi et dans ce cas là  tu recommences pour envoyer les messages restants.


     


    En ce qui concerne le certificat SSL.


    En fait il faut utiliser le protocol SSL/TLS pour communiquer avec le serveur apns d'Apple. Attention, il ne s'agit pas de https, mais "juste " de SSL/TLS donc un serveur mutualisé peut très bien le faire. Tu verras qu'avec EasyAPNS, il faut fournir un fichier PEM qui contient ta clé privée et un certificat qui contient ta clé publique certifiée (par Apple je crois).


     


    En fait, tu pourrais aussi envoyer les messages à  partir de ton mac (il y a une app sur github qui le fait). La seule partie pour laquelle tu as vraiment besoin d'un serveur, c'est pour recevoir et stocker les deviceToken de tes clients à  n'importe quelle heure du jour et de la nuit.


Connectez-vous ou Inscrivez-vous pour répondre.