民意调查与推送...对于应用中的多封电子邮件会更好吗?

时间:2017-03-27 01:43:39

标签: android push-notification polling email-integration

我正在开发一款可以处理多个电子邮件帐户,POP3和IMAP的Android APP。当前APP,要检查电子邮件,请打开APP并单击更新功能。这会记录到每个电子邮件帐户,并检查是否有新邮件。虽然这有效,但我们需要更有效,及时地检查新消息。

起初我认为PUSH是要走的路,但从我在这里读到的,这可能并不理想......特别是有多个IMAP账户。如果我理解正确,它会使每个IMAP连接保持长期开放,这可能会导致其他一些问题,并且不确定我是否可以将它与POP3帐户一起使用。

我将POLL作为替代方案,但也存在潜在问题。这涉及频繁启动频率并进行帐户“检查”,所花费的时间以及所有这些都会影响电池续航时间。此外,似乎有几种不同的“方式”来安排POLL选项(AlarmManager,JobScheduler和SyncAdapter)...我假设一个可能比另一个更好...特别是新版本的Android让你在一天的某些时间“安静”你的设备。

所以问题是,根据我们的目标,哪种方法可以更好地处理这种能力?我倾向于PUSH(格式......仍然不确定),但不想浪费数小时的时间来发现我走错了路。

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

IMAP支持IDLE Command,其中客户端充当被动实体,依赖/依赖服务器来通知帐户中新邮件的到达。但正如你正确地发现,如果由于任何可能的原因而受到干扰,它将保持连接打开以及重建连接的其他问题。

POP不向客户提供此类被动功能。客户端必须从服务器中提取邮件。

根据我的经验,客户端帐户的完全同步不是问题,但需要处理太多事情,例如解析邮件内容,维护帐户文件夹中的活动邮件列表,等。

[1]非常简单的同步机制就是简单地显示MailList,每当点击一条消息然后动态加载邮件内容。

MailList =帐户文件夹中邮件条目的排序顺序。

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

这种最初显示MailList并按需提取邮件内容的方法可以通过以下两种方式实现:

  • IMAP(FETCH主题,INTERNALDATE,发件人,大小)和

  • POP(TOP nm {TOP是一个POP命令,可以获取mnth邮件正文的行数以及nth邮件的完整MailHeaderSection })。之后可以解析MailHeaderSection并构建MailList。

[2]只需获取完整邮件并相应地存储。现在,按需解析它并将其显示给用户。这两者都很容易支持:

  • IMAP(FETCH BODY.PEEK [])

  • POP(RETR n)

我喜欢这种方法,因为它很简单。

上述两种方法都在工作,就好像客户端是活动实体(按需提取邮件)。