Journal Facebook Notification, épisode 2

Posté par (page perso) . Licence CC by-sa
6
25
jan.
2016

Depuis la dernière fois, j'ai fait évoluer ma petite application Android me permettant d'avoir les notifications (amis, messages et général) de Facebook sur mon téléphone, sans pour autant devoir installer l'appli officielle ni devoir activer la "Facebook Platform" qui expose une API.

Pour faire simple, je charge régulièrement https://m.facebook.com/menu/bookmarks/ et je récupère les informations qui m'intéressent dans le code HTML. Groumly m'a fait remarquer dans le journal précédent que ma batterie n'allait pas apprécier, ce qui est peut être effectivement le cas sur d'autres téléphones, mais mon app ne consomme jamais suffisamment d'énergie pour apparaitre dans la liste de consommation de batterie. Je ne dis pas que c'est partout le cas, juste que c'est largement acceptable sur le mien :)

Depuis la dernière fois, voici les principaux changements :

  • Ce n'est plus une activité invisible qui est lancée mais un service qui dessine une fenêtre de 0px : les jeux et lecteurs vidéo ne sont plus mis en pause à chaque vérification
  • L'app est utilisable pour naviguer dans Facebook si on veut la séparer de la navigation habituelle, mais ce n'est pas obligatoire : je continue d'utiliser Tinfoil for Facebook et je suppose que ça marche aussi avec Face Slim.
  • J'ai un peu moins honte du code : plus de bouts de code copié-collés à droite à gauche, et les appels spécifiques à des API supérieures sont dans des blocs conditionnels.
  • Plutôt que d'afficher une notification par catégorie non-vide (j'affichais 2 notifications pour 3 messages en attente et 1 demande d'amitié), je combine tout dans une seule notification.
  • Si j'affiche une notification "multi-catégorie", je créé aussi une BigView (notification étendue) avec des boutons d'action spécifiques pour accéder directement à ce que l'on veut.
  • Si on a regardé ce qu'il fallait voir depuis un autre appareil/navigateur/whatever, je supprime la notification Android affichée. C'est pas grand chose mais c'est bien plus agréable à l'utilisation.
  • Avant d'écraser la notification existante, je regarde si elle est différente. Si elle ne l'est pas, ça ne fait pas re-vibrer le téléphone à chaque vérification.
  • Utilisation de l'éventuelle LED de notification

Donc au final, beaucoup de petits changements discrets qui se traduisent par une application plus agréable à utiliser. C'est en tous cas mon avis après une longue période de test d'environ 10 heures, nuit incluse :)

J'ai mis un lien vers un .apk de release et un de debug : j'ai parfois des soucis avec la version release où le "minify=true" à la compilation me fait sauter la fonction qui fait la passerelle entre le code Java et celui Javascript que j'injecte dans la page pour récupérer les données. C'est peut être car Android Studio détecte la fonction comme étant non utilisée, je ne sais pas.

Si tout se passe bien pendant un petit moment, je verrai si je peux l'envoyer sur F-Droid, et bien sûr, je suis ouvert à toute remarque.

  • # Rss powa ?

    Posté par (page perso) . Évalué à 2.

    Question : pourquoi ne pas utiliser le flux rss que facebook mets à disposition pour les notifications (=> https://www.facebook.com/notifications, le pitit lien "RSS") ?

    • [^] # Re: Rss powa ?

      Posté par (page perso) . Évalué à 5.

      Je ne prend pas ce RSS car ça ne donne que les notifications "générales" (la petite icône de planète), et non pas les demandes d'ami et messages (car c'est surtout ces derniers qui m'intéressent). D'autant plus que l'état lu/non-lu des éléments ce flux RSS n'est pas stocké par Facebook, du coup il est impossible d'éviter de notifier l'utilisateur s'il a déjà vu quelque chose via son navigateur.

      Dans mon approche, je ne fais que copier les petits numéros affichés sur les trois icônes de la barre de titre dans une notification native Android hors du site web. L'aspect "nouveau" ou non n'est pas de mon ressort.

      • [^] # Re: Rss powa ?

        Posté par (page perso) . Évalué à 2.

        EDIT trop tard : Par contre, ce RSS pourrait être utile pour afficher plus d'informations, comme par exemple une prévisualisation de ce qui est arrivé. L'inconvénient est que cette preview serait limitée par la catégorie "Notifications générales" et non pas les messages. Pour palier ce problème, je pensais taper dans ce qui est transmit en AJAX par l'interface mobile HTML5 (https://edge-chat.facebook.com/pull?[balblabla]) mais il y a tout un tas de paramètres dans l'URL, il faut sûrement réfléchir un peu à comment récupérer les données voulues.

        • [^] # Re: Rss powa ?

          Posté par (page perso) . Évalué à 4.

          Mouais mais en fait nan, le flux RSS en question est vraiment tout pourri, aucun contenu, aucun titre, il ne te dit que "machin a posté une nouvelle photo" ce qui est assez succin. Ceci étant dit ça permet de savoir quand quelque chose vient d'apparaître dans la "timeline" sans trop de coût et donc de lancer un vrai fetch plus complexe.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.