Notifications sur iPhone 3.0

Une des grandes nouveautés de la version 3 du système d’exploitation sont les notifications.

Apple ne donne pas le droit à une application de tourner en tâche de fond, donc en quittant une application par exemple de messagerie instantanée pour aller consulter votre courrier ou visiter une page web, vous ne la minimisez pas conme sur un ordinateur de bureau ou portable, vous perdez vos discussions en cours.

Je n’ai pas vu d’explications officielles précises mais le fait que l’iPhone n’est que 128 Mo de RAM (256 pour le nouveau modèle) milite pour cette exclusivité sur cette ressource rare surtout pour un appareil avec une interface aussi riche. Je ne connais pas Android ou BlackBerry mais Windows Mobile a un système de warning à plusieurs niveaux de criticité envers les applications lorsque la mémoire vive disponible est basse.

Depuis la dernière version les applications peuvent envoyer des notifications à l’appareil, ici un exemple avec Beejive une application de messagerie instantanée :

exemple de notification
exemple de notification

Comment cela se passe sous la capot ? Voici un résumé du worflow entre l’application, les serveurs d’Apple et votre serveur :

  1. L’utilisateur lance l’application
  2. L’application s’enregistre auprès des serveurs de notification d’Apple
  3. Ces derniers générent  un token applicatif à partir des informations de l’application et de l’iPhone et renvoie cette information à l’application.
  4. L’application transmets ce token à son serveur
  5. Le client quitte l’application par exemple
  6. Le serveur peut alors envoyer des notifications à l’utilisateur via les serveurs d’Apple avec le token précédemment enregistré sous la forme d’un son, badge (chiffre affiché sur l’icône de l’application) ou d’un court texte.
  7. L’utilisateur choisit de fermer la notification ou de lancer l’application concernée

En dessin :

schema dy système de notifications
schema dy système de notifications

Cela marche très bien avec l’application testée. On ne peut pas pour l’instant spécifier comme on le fait naturellement sur un ordinateur quand est-ce qu’on quitte une application et quand on la minimise. On peut bien sûr désactiver la notification mais ce n’est pas très pratique. Beejive contourne un peu le problème en laissant l’utilisateur spécifier un temps (de qqles minutes à 24h) au bout duquel les notifications ne sont plus transmises. Je pense qu’il y a une marge de progession pour le système de notifications (sans parler ici de la consommation supplémentaire induite par la connexion IP permanente entre l’iPhone et les serveurs d’Apple).

billet publié dans les rubriques coding le