2017-03-27 3 views
1

Je travaille sur une application Android qui va gérer plusieurs comptes de messagerie, POP3 et IMAP. L'application actuelle, pour vérifier les e-mails, vous ouvrez l'application et cliquez sur une fonctionnalité de mise à jour. Cela se connecte à chaque compte de messagerie et vérifie tout nouveau courrier. Bien que cela fonctionne, nous avons besoin d'un contrôle plus efficace et plus rapide pour les nouveaux messages. Au début, je pensais que PUSH était la voie à suivre, mais d'après ce que j'ai lu ici, ce n'est peut-être pas idéal ... surtout avec plusieurs comptes IMAP. Si je comprends bien, il maintient chaque connexion IMAP ouverte à long terme, ce qui pourrait causer d'autres problèmes et je ne suis pas sûr que je pourrais même l'utiliser avec des comptes POP3.Poll vs Push ... ce qui serait mieux pour plusieurs emails dans une application?

J'ai regardé dans POLL comme une alternative mais cela aussi a des problèmes potentiels. Cela implique la fréquence à laquelle il se déclenche et fait le compte "vérifie", la quantité de temps qui prend, et comment tout cela affecte la vie de la batterie. En outre, il semble y avoir plusieurs "façons" différentes de planifier l'option POLL (AlarmManager, JobScheduler, et SyncAdapter) ... et je suppose que l'un pourrait être meilleur que l'autre ... en particulier avec la nouvelle version d'Android qui vous laisse "calme" votre appareil à certains moments de la journée. Donc, la question est, en fonction de ce que nous cherchons à faire, quelle est la meilleure façon de gérer cette capacité? Je me penche vers PUSH (quel format ... encore incertain), mais je ne veux pas perdre de temps à découvrir que j'ai fait fausse route.

Merci pour tout conseil. IMAP prend en charge IDLE Command dans lequel le client agit en tant qu'entité passive en fonction/en s'appuyant sur le serveur pour notifier l'arrivée de nouveaux courriels dans le compte

Répondre

0

Mais comme vous l'avez deviné correctement, cela permettra de garder la connexion ouverte et d'autres problèmes de reconstruction de la connexion si elle est perturbée pour une raison possible. POP ne fournit pas une telle capacité passive aux clients. Les clients doivent retirer les mails du serveur. D'après mon expérience, la synchronisation totale du compte côté client n'est pas un problème, mais elle nécessite trop de choses, comme l'analyse du contenu du courrier, le maintien de la liste active des mails dans le dossier d'un compte, etc

[1] Le mécanisme de synchronisation très simple serait d'afficher simplement le MailList et chaque fois qu'un message est cliqué, puis charger dynamiquement le contenu du courrier.

MailList = Ordre trié des entrées de courrier dans le dossier d'un compte.

Single Mail Entry = Sender + Mail Subject + Mail Date & Time + Mail Size

Cette méthode de montrer MailList d'abord et récupérer le contenu du courrier à la demande peut être réalisée par les deux:

  • IMAP (fetch Sujet, INTERNALDATE, Sender, Size) et

  • POP (TOP nm {TOP est une commande POP qui peut aller chercher m nombre de lignes de nth le corps du mail avec MailHeaderSection complète de nth mail}). Ensuite, MailHeaderSection peut être analysé et MailList peut être construit.

[2] chercher simplement le courrier complet et stocker en conséquence. Maintenant, Analysez-le à la demande et montrez-le à l'utilisateur. Ceci est également facilement pris en charge à la fois:

  • IMAP (fetch BODY.PEEK [])

  • POP (RETR n)

J'aime cette méthode depuis sa simple.

Les deux méthodes ci-dessus fonctionnent comme si le client était une entité active (extraction de courrier à la demande).

+0

Nous avons essentiellement cela, mais l'application doit se connecter à chaque compte pour obtenir le "nouveau" vs "ancien" mail ... et ensuite faire savoir à l'utilisateur qu'il y a un nouveau courrier à voir. Mais nous avons besoin d'un mécanisme pour vérifier automatiquement le nouveau courrier ... soit PUSH ou POLL. Des sons comme PUSH ne peuvent certainement pas être idéaux, puis causer des problèmes IMAP et POP3. – Peter

+0

@Peter: Si vous êtes ** seulement ** concerné par le fait de montrer si le dossier d'un compte a de nouveaux messages sans les récupérer complètement, alors cette exigence est facilement satisfaite par IMAP et POP. Vous avez juste besoin de maintenir la liste des mails déjà téléchargés. Dans IMAP et POP, il existe des identifiants uniques attribués aux mails. Vous devez simplement travailler avec ces identifiants uniques si vous avez juste besoin de montrer qu'il y a de nouveaux mails dans le dossier d'un compte. – sameerkn

+0

Je pense que vous avez mal compris ... Nous avons cela. Encore une fois, l'APP fait tout cela ... FOURNI ... nous ouvrons l'APP et le laissons vérifier. Ce n'est pas le problème ou la question. Nous devons AUTOMATISER ce processus de vérification lorsque l'application n'est pas en cours d'exécution ... d'où, PUSH ou PULL question. – Peter