Journal Facebook Notifications

Posté par (page perso) . Licence CC by-sa
10
17
nov.
2015

Bonjour Nal,

Je ne sais plus si c'est la première fois ou la seconde fois que je t'écris, mais de toutes façons, ça n'importe pas.

Image logo de Facebook Notifications

Je veux juste te signaler que j'ai codé un petit truc très majoritairement aujourd'hui (enfin, hier), que c'est libre (MIT) et que ça me sera probablement pratique, à savoir une app qui fonctionne en arrière plan pour vérifier si j'ai des notifications quelconques sur Facebook qui m'attendent. Comme j'utilise Tinfoil for Facebook et non Messenger, je trouvais que ça manquait, donc j'ai comblé ce manque.

Je ne prétend pas que le code est beau, et je sais que certains morceaux sont très moches, donc des conseils (ou des pulls) sont bienvenus !

Dans la liste des remarques :

  • C'est du polling, à raison de 1 requête toutes les "environ 5 minutes" selon les minuteurs approximatifs d'Android. Je tape sur la version mobile et statique (non javascriptée) pour avoir une page la plus légère possible, tout en désactivant les images
  • Je n'ai pas réussi à mettre le tout dans des services de synchro d'arrière plan, car le webview que j'utilise pour faire tout le travail ingrat se plaint de ne pas être instantiable dans un contexte sans affichage. Du coup, ça lance une activité en mode NoDisplay, je ne sais pas si ça se comporte bien avec d'autres apps, comme par hasard des jeux, s'ils sont mis en pause ou que ça les fait saccader un peu
  • J'ai une compatibilité (théorique) jusqu'à Android 4.0.1 (API 15). Ce n'est pas testé, et je commençais à avoir trop d'avertissement de compatibilité pour des versions 2.x d'Android
  • C'est censé ne pas être trop gourmand en batterie, mais en fait, je n'en ai aucune idée, du coup je dis peut être une énorme bêtise
  • Je n'ai jamais appris à faire du bon code, mais j'aime bien coder : ça évoluera selon les envies et le temps

Et pas longtemps avant, j'ai fait un BatteryLogger d'un genre inhabituel : j'ai forké AtmosphereLogger qui fait un relevé barométrique régulier pour faire un relevé de température régulier. Ça ne sert à rien mais c'est rigolo, et ça consomme que dalle en batterie. Si le code est beau, ce n'est pas de ma faute. Par contre, je n'ai pas fait de release d'APK à installer à la main, mais j'ai demandé son intégration dans f-droid, sans nouvelle jusqu'à maintenant.

  • # Push fatigué, push cassé

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

    Bon, j'ai remarqué que je debordais trop d'enthousiasme et que j'ai visiblement mal pushé la version 1.1 qui gère mieux la distinction "pas de notif" et "pas loggué".

    Donc si vous avez un joli warning permanent de "could not retrieve notifications", c'est un problème connu.

    Et oui aussi, les strings sont actuellement codées en dur, il faut que je change ça, c'est facile.

    • [^] # Re: Push fatigué, push cassé

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

      Maintenant, c'est beaucoup mieux. J'en ai profité pour ajouter une traduction en français, donc avec des chaînes de caractères qui ne sont plus codées en dur.

      J'ai corrigé un petit problème dans le javascript injecté pour récupérer les données, vérifiez que vous utilisez la version 1.2 (dans le gestionnaire d'apps).

  • # Facebook Notifications

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

    C'est malin, je croyais que tu allais parler du nouveau merdier de Facebook qui fait tout comme RSS, mais qui s'appelle pas RSS.

    Sinon pour les notifications des evenements Facebook eux-mêmes, j'utilise tout simplement les emails, j'en reçois un des que quelqu'un m'envoie un message comme ça je peux aller vérifier directement. Est-ce que ça serait pas suffisant ?

    • [^] # Re: Facebook Notifications

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

      Pour les événements, j'utilise l'export de calendrier iCal qu'ils proposent, du coup c'est plutôt cool et bien intégré à Android avec l'app ICSDroid.

      En l'occurrence, c'est plus pour avoir les notifications de messages car je connais plein de monde qui ne communique que par Facebook : pour un certain nombre d'entre eux, je n'ai ni email ni téléphone, juste leur contact sur FB.

      • [^] # Re: Facebook Notifications

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

        Je me suis mal exprimé: lorsque je reçois un message sur Facebook, c'est Facebook qui m'envoie un mail. Même pas besoin de me connecter pour savoir qu'il se passe quelque chose.

        • [^] # Re: Facebook Notifications

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

          Effectivement, c'est une approche possible mais dans mon cas, je n'ai pas envie de recevoir des emails pour cela, je finirai par être inondé. Une petite notification jetable me convient bien.

          Je ne dis pas que mon app convient à tous, mais juste qu'elle convient à mon usage et peut être aussi à celui d'autres personnes :)

  • # Moi, je sais

    Posté par . Évalué à 4.

    Je ne sais plus si c'est la première fois ou la seconde fois que je t'écris

    Deuxième fois : https://linuxfr.org/users/xinfe

  • # Ta batterie va pas kiffer

    Posté par . Évalué à 3.

    Pourquoi ne pas faire une appli serveur qui t'envoi un push quand ya du contenu?
    Plutot que de faire mouliner ta radio et ton cpu pour choper et parser du html avec du javascript, tout en envoyant au passage a facebook ton ip et donc une idee de ta localisation?

    Linuxfr, le portail francais du logiciel libre et du neo nazisme.

    • [^] # Re: Ta batterie va pas kiffer

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

      Bonnes questions, je vais donc y répondre :

      • Pour la batterie, j'imagine que le Push nécessite une connexion permanente avec un serveur (sinon, bonjour les NAT), du coup la radio est toujours active. Pour le coup, je ne sais pas quelle solution est effectivement meilleure,
      • La solution actuelle est simple dans le sens où je n'ai qu'à développer une app locale au téléphone sans nécessiter de serveur supplémentaire,
      • Oui, j'injecte du javascript et c'est sûrement pas optimal en terme d'utilisation CPU mais la webview me permet de m'abstraire de toute la gestion des cookies, sessions et communications HTTP. S'il existe un truc du genre qui fait pareil mais sans l'affichage ni exécution de JS, je prends !
      • Oui, le problème de l'IP et de sa localisation est bien vu. Dans mon cas, j'utilise la messagerie quotidiennement, du coup l'information est déjà présente chez eux, mais c'est vrai que j'en donne encore un peu plus (vu que c'est automatisé).
      • [^] # Re: Ta batterie va pas kiffer

        Posté par . Évalué à 5.

        Le push utilise une seule connexion persistente pour toutes les applis installees. Connexion qui ne tranfere rien 90% du temps. Et ca a ete regle finement par une armee de mecs dont c'est le boulot.
        Ca mange un peu, mais vachement moins que de se taper un lookup dns, puis un handshake https, tout ca pour finalement transferer des donnees pour rien. Si tout le monde faisait ca, ton telephone serait constammemt en train de transferer des donnees (et pour rien la majorite du temps).

        ca veut aussi dire que tu n'as pas a reveiller l'appli en permanence. Bref, c'est vachement plus efficace (mais aussi un chtouille plus complexe a mettre en place, quoique l'api de google pour ca est tres raisonnable face a celle d'apple).

        Linuxfr, le portail francais du logiciel libre et du neo nazisme.

        • [^] # Re: Ta batterie va pas kiffer

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

          Je viens de regarder et si j'ai bien compris, c'est le Google Cloud Messaging ? Dans ce cas, j'ai l'impression que c'est dépendant des Google Play Services. C'est donc à la fois un avantage et un inconvénient.

          Je garde ça dans un coin de ma tête pour voir si c'est ce que je veux faire. Merci pour l'info :)

Suivre le flux des commentaires

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