CQFDroid - La Tribune dans sa poche ! (1.2)

par Flex, Flex posté le 30/11/2011 17:58 (modifié 13/08/2013 21:06)

CQFDroid vous permet de suivre la Tribune du site jaune directement sur votre téléphone Android.

Minimum requis

Android 2.3.1

Forfait data (bha oué !)

Installation

Téléchargez l'application ici ou directement en scannant ce QR Code

Si ce n'est déjà fait, il est nécessaire d'autoriser l'installation d'applications non signées / non Market / ... dans les paramètres de sécurité de votre téléphone.

Configuration

Rendez-vous dans votre compte utilisateur sur le site jaune.

Lancez l'application sur votre téléphone, appuyez sur la touche Menu et allez dans Enregistrement.

Entrez votre numéro d'utilisateur (5**) et appuyez sur M'enregistrer.

Dans la partie "Accès extérieurs" de votre compte d'utilisateur, une nouvelle ligne en bleu va apparaitre.

Cliquez sur Accepter.

Voila ! Vous pouvez maintenant utiliser l'application !

Changelog

1.2 - 23/03/2012

  • Possibilité de poster un message sur la tribune !
  • Ajout de la reconaissance vocale
  • Nouvelle gestion des urls dans la liste des posts.
  • Cliquer sur un post affiche maintenant un menu :
    • Répondre au message
    • Afficher les urls contenues dans ce message (et lancer le navigateur).

1.1 - 05/12/2011

  • Correction typo
  • Ajout des notifications de nouveaux messages sur la tribune
  • Optimisation du code réseau (Exécution sur un thread séparé)

1.0 - 30/11/2011

  • Première release

TODO

  • [+] Partage d'image (via share)
  • [+] Ajouter le nombre de nouveaux posts dans la notification
  • [+] Rendre configurable l'interval du check de nouveaux posts (si pas de push)
  • [+] Ajouter et rendre configurable un son/led/vibration pour la notification
  • [+] Possibilité de voir qui est en ligne
  • [+] Intégration au market (pour MAJ simplifiée)
  • [+] Possibilité d'uploader un fichier (photos)
  • [fix] Il se peut que le service ne check plus les nouveaux posts
  • [fix] Une notification apparait lorsqu'on lance l'appli
  • [fix] Les < et > restent encodés.
  • [div] Nettoyage des images et xml non-utilisés
  • [div] Supprimer la lib greendroid (-50ko)
Par Flex, Flex posté le 30/11/2011 18:03

Je précise que si vous rencontrez des bugs, venez vous plaindre ici ;)

Concernant une version Iphone...un jour peut-être :)

Par Mage, Mage posté le 30/11/2011 18:36

Double post et téléphone n'a qu'un seul " n ". :p

C'est quoi au juste ce téléphone androïde ??? Je pensais que ces codes à la con étaient pour les Imerdes.

Par RyLe, RyLe posté le 30/11/2011 20:42

Bon, suis en 2.1 sur le Hero donc ça sera sans moi pour le test ^^

Par Trowa, Trowa posté le 30/11/2011 20:49

ca marche sur un samsung galaxy s2?

Par Xfennec, Xfennec posté le 30/11/2011 21:16

L'image est énorme, bien joué :)

Par Flex, Flex posté le 30/11/2011 23:05

Ryle : Je pourrais faire une retro-compat avec la 2.1 mais c'est quand même une vieille version d'Android, et du coup l'appli perdait quelques optimisations.

Trowa : Tout à fait ! De mémoire les Galaxy S2 sont en 2.3.1 de base. Si jamais ca ne passe pas, dis-le moi.

Par RyLe, RyLe posté le 04/12/2011 00:01

C'était juste pour l'essayer, vu que je suis en iphone 4 et que je n'utilise plus le hero ;)

Par Yoltie, Yoltie posté le 06/12/2011 13:27

À quand une version pour iPhone ? :p

Par Flex, Flex posté le 08/12/2011 19:14

Je n'y connais rien en developpement Iphone.

Xf, toi qui y a touché, c'est comment ?

Par Xfennec, Xfennec posté le 08/12/2011 22:07 (modifié 09/12/2011 21:49)

Lourd, selon moi : langage spécifique (Objective-C), environnement spécifique (MacOS X + XCode), programme développeur (= 99 €) obligatoire pour déployer officiellement l'appli suivi d'un calvaire (la validation), à répéter à chaque mise à jour.

Y'a aussi des "générateurs d'applications" (souvent unifiés iPhone/Android/BlackBerry), mais j'ai jamais testé.

Sinon, faut faire ça un peu en "off", en visant les machins jailbreakés (c'est le choix que j'ai fait pour Raydium, mais Raydium est en C et il interagit très peu avec l'OS, ça aide)

Par Flex, Flex posté le 08/12/2011 22:16

J'étais effectivement lancé sur l'idée du "off" (que celui qui n'a pas un iPhone jaillbreaké lève bien haut la main), mais du coup, quid de l'environement de dev et/ou de l'émulateur pour debugger ?

Concernant les générateurs d'apps, j'avais testé il y a quelques mois PhoneGap sur Android et ça marchait plutôt pas mal. Je viens de voir à l'instant qu'il a pas mal évolué. A voir donc.

Par Trowa, Trowa posté le 23/12/2011 13:21 (modifié 23/12/2011 13:27)

ca y est sur mon tel^^

Par Flex, Flex posté le 23/12/2011 13:32

Cool, et ca fonctionne bien ?

Par Trowa, Trowa posté le 23/12/2011 14:02

pas encore il me met bientot je vois les discutions mais je ne peux pas parler encore

Par Flex, Flex posté le 23/12/2011 14:10

C'est normal, pour le moment on ne peut que voir les messages :)

La prochaine mise à jour permettra (peut-être) de poster (il y a des modifications à apporter ailleurs que sur l'application).

Par Trowa, Trowa posté le 23/12/2011 14:33

ok bah j attendrais alors lol

Par Xfennec, Xfennec posté le 06/02/2012 11:10

Flex, on dirait que les notifications s'arrêtent quelques temps après la fermeture de l'appli. Pourtant, processus et service sont toujours là.

J'ai pas spécialement réussi à déterminer le délai au bout duquel ça ne remonte plus de notifs, mais j'ai déjà constaté le truc moins d'une heure après avoir fermé l'appli.

Par Flex, Flex posté le 06/02/2012 11:20

Etrange, je viens de vérifier, sur mon téléphonne les notifications sont toujours actives plusieures heures apres.

Comment fermes-tu l'appli ? (Bouton Quitter ou touche retour/home)

Je vais regarder en détail. De toute façcon, le service tel qu'il fonctionne pour le moment ne me plait pas trop et je comptais changer ça.

Merci pour la rémontée :)

Par Flex, Flex posté le 08/02/2012 15:20

J'ai cherché et trouvé d'où vient le problème.
C'est exactement ce que je pensais.

En gros, CQFDroid utilise un service "local" qui démarre avec l'activité mais qui continue de tourner une fois cette dernière mises en stand-by et/ou fermée grâce à un flag spécial dans le Manifest.

Le truc, c'est qu'Android décide autoritairement de mettre le service en stand-by même s'il est encore visible.

C'est un problème (sans en être vraiment un) du type de service dit "local".

Deux solutions :

Utiliser l'autre type de service dit "distant", auquel l'application viendra se connecter. (Mais qui reste un service local sur le phone).

  • Avantages : La communication reste en le phone et le site jaune, pas de modif à faire côté serveur.
  • Inconvénients : Recoder la partie service, toujours utiliser une boucle, peut pomper de la batterie.

Utiliser le push de Google. Le téléphonne étant en contact permanant avec les serveur Google, il suffit de faire passer une info "Nouveaux post" dans le flux.

  • Avantage : Plus de boucle, le service se contante de recevoir l'info de Google (quelques k/octets), moins de process = plus de batterie.
  • Inconvénients : Demande une modification côté serveur, ce dernier devant determiner les nouveaux messages et envoyer le push. Demande une inscription du tel au push Google (mais une seule fois et peut se faire de manière transparante pour l'utilisateur via l'application).

Voila voila, avant que je remette les mains dedant, qu'en penses-tu Xfennec ?

Par Xfennec, Xfennec posté le 08/02/2012 22:30 (modifié 08/02/2012 22:34)

Bien vu pour le diagnostique du truc.

Pour la soluce, je serais à la base plus partant pour la première option, qui a l'avantage de la compatibilité. On est d'accord qu'on ne parle pas de boucle entre l'appli et le service ? Mais bien du service sur le site jaune, comme actullement ?

Cependant, l'option push est super attirante techniquement : on a l'aspect "instantané" de la notification + une conso optimale. En revanche, coté serveur, ça nous lie beaucoup à google, et ça me fait craindre un peu en terme de maintenance et d'évolutivité. Ca mérite d'être regardé.

Tu as des pointeurs d'articles ou autres sur cette histoire de push ?

edit : quelques trucs à regarder/paufiner que je note ici histoire d'avoir un trace :

  • les notifications semblent ne pas "s'emplier" (on ne voit que le dernier message)
  • quand on clique sur un message, ça semble "suivre un lien". Du coup, la touche "précédent" semble vouloir faire quelque chose
  • la regexp des URL semble perfectible (cf celle du site, ou imaginer un parsing coté serveur ?)
  • lorsqu'on lance l'appli et que des nouveaux messages ont été postés, on reçoit une notif
  • blablabla liste utilisateurs blablabla notifs connexion ? (peut-être chiant à la longue, j'en témoigne avec mon script shell)
  • l'application ne fait pas le café
Par Flex, Flex posté le 08/02/2012 23:18 (modifié 08/02/2012 23:19)

On est bien d'accord, il s'agit d'une boucle Service<->Site jaune.

Concernant le push, je t'invite à lire http://blog.octo.com/notifications-push-android-c2dm/ bien fait et assez exhaustif. Le nom de la techno est C2DM.

C'est assez simple à mettre en place dans une appli Android, j'ai fais des tests qui fonctionnaient très bien.

Pour la liste : 

  • Le notifs qui ne s'empilent pas, c'est un choix. 20 motifs qui remplissent la barre c'est pas top. En revanche, je pourrais indiquer le nombre de nouveaux message dans la petite bulle rouge. Je pourrais aussi rendre ca configurable comme ça, libre à chacun de gérer ses notifs.
  • Je n'ai pas se problème, faudrait qu'on regarde ensemble sur ton tel (ou que tu fasse une petite vidéo).
  • La gestion des url est automatique, gérée par Android. Mais je pourrais aussi la parser à la main avec un regexp. Tu as un exemple d'url mal parsée ?
  • Yep. "It's not a bug, it's a feature". Bon ok, c'est un bug "connu". Le recodage du service devrait "normalement" corriger ça.
  • Heuu, pas compris ?!

Edit: J'ai oublié de dire merci pour la remontée de bug/features :)

Par Xfennec, Xfennec posté le 09/02/2012 14:44

J'ai jeté un oeil (très) rapide ce midi à C2DM (merci pour le lien), ça semble faisable, mais c'est effectivement complètement google-centric :) Il faut stocker des trucs dans la base serveur, il semble y avoir une histoire de renouvellement des ids que je n'ai pas cernée, etc.

Ca me donnerais presque plus envie de faire une "surcouche" à l'API REST existante, sous la forme d'une appli séparée (qui tournerait sur le serveur jaune malgré tout) pour ne pas mélanger tout ça. 'Fin je vais réfléchir à tout ça (et creuser un peu les détails de C2DM aussi)

Pour l'empilement des notifs, je pensais plus à un décompte du nombre de messages, effectivement. Pour l'histoire du clic sur les messages, je te montre dès que possible.

Quant au truc incompréhensible, c'est juste l'idée d'avoir une liste des personnes connectées. J'imaginais aussi prévoir un système de notification des personnes connectées ("Machin vient de se connecter") mais à l'usage, ça flood un peu (mon script shell fait ces notifications, et ça pleue tout la journée en fait)

Par Flex, Flex posté le 09/02/2012 15:06

Concernant le C2DM, il existe 2 moyens facile de voir la techno en action :

  • En allant sur l'Android Market tu peux installer à distance un appli sur ton tel.
  • En utilisant le très pratique Chrome to Phone qui permet de pusher une url sur ton tel depuis Chrome (pratique pour envoyer un APK non dispo sur le market sur ton tel), ou une image, une video YT, etc...

Le renouvellement d'ID par google est effectivement possible (une sécurité j'imagine). Quand j'avais fais des tests, mon id n'avait jamais changé. Mais effectivement, l'appli doit être en mesure de détecté un changement d'id et d'aller en informer le serveur.

Pour le décompte des message, c'est ajouté à la TODO.

Et pour les personnes connectées, je cherche toujours un moyen de rendre ça discret sur l'appli, comme il n'y a pas beaucoup de place sur l'écran... Et je n'ai pas envie de mettre ca sur une autre activité. Peut-être un système de slide, ou une autre couleur pour le nick, je ne sais pas trop encore.

Par Flex, Flex posté le 26/08/2012 23:42

Pour les users android, merci d'indiquer ici votre version Android :

Pour ma part : 4.0.4

Par Mage, Mage posté le 26/08/2012 23:43

Samsung Galaxy S2 (Xfennec et moi) : 4.0.4