J’ai eu le retour de différentes personnes n’ayant pas compris totalement le mode de fonctionnement du service de push notification chez Apple. Je vais donc donner différents détails qui je l’espère permettrons de mieux comprendre le fonctionnement.
La documentation officielle est disponible sur le portail developer.apple.com.
Il est important de distinguer 3 entités :
- le terminal iOS utilisé ;
- le service de push chez Apple (que j’appellerais APNS) ;
- le service de push chez l’éditeur de l’application (que j’appellerais PushService) qui comporte une base de données.
Le fonctionnement est le suivant :
- L’application est installé sur le téléphone d’un utilisateur. Ce dernier active les notifications pushs. Le terminal envoi une requête au PushService avec son UDID (Identifiant uniquement sous la forme d’une chaîne hexadécimale).
- Lors de l’arrivée d’un nouveau contenu, le PushService récupère l’ensemble des UDIDs enregistrés. Il se connecte ensuite à l’APNS via un socket SSL et transmet le message. Il est possible de définir le type de notification : soit badge, soit alerte, soit un son; accompagné d’un message.
- Les serveurs de pushs APNS chez Apple envoient ensuite la requête aux différents téléphones
- Les utilisateurs reçoivent sur leurs terminaux les notifications.
Le délai est très souvent de quelques secondes entre l’envoi par PushService et la réception sur le terminal). PushService doit régulièrement effectuer une action complémentaire auprès du service de push Apple : récupéré la liste des UDIDs qui ne doivent plus recevoir de push notifications (ex : terminal indisponible, compte utilisateur apple fermé, etc…). Si cette action n’est pas réalisée, Apple se permettra de rendre indisponible l’envoi de push.
A noter qu’actuellement, aucun service de push n’est disponible sur Android. Mais il semblerait que les développements soient en beta dans les labs.