Mailcore2 在后台

Posted

技术标签:

【中文标题】Mailcore2 在后台【英文标题】:Mailcore2 on background 【发布时间】:2015-07-02 05:05:19 【问题描述】:

我正在将 Mailcore2 用于我自己开发的应用程序,Mailcore 的一切都很完美,但现在我试图在用户最小化应用程序时检索电子邮件(在后台输入),我尝试使用后台通知但没有工作,因为关闭和第一个窗口之间进入我的后台功能的时间太长了。

所以我尝试在用户最小化应用程序时保持 idleOperation 工作,但有时工作完美,有时根本不工作。

谁有办法解决这个问题?

我正在使用 Xcode 和 ios 8。

谢谢。

【问题讨论】:

【参考方案1】:

iOS 为后台获取提供的时间片是基于开发人员未知的算法。 如果您想使用 IMAP IDLE 操作,那么您必须在 performFetchWithCompletionHandler: 内开始,并确保在应用再次进入睡眠之前完成,即从几秒到最多 30 秒的任何时间。

我建议您在进入后台后立即创建一个 IMAP 会话,轮询 IMAP 以获取新的更改,尽快处理并进入睡眠状态。但同样,iOS 会决定您何时以及多长时间获得该时间片以进行后台提取。

更新答案:

如果要求只是获取新电子邮件的通知,那么只需在您的应用上注册推送通知并从您的服务器推送它们或使用Pushwoosh 等服务。

【讨论】:

感谢您的回复!但是邮件应用程序如何真正快速地获得通知?因为他们不会等待来自 iOS 的“时间”来检索新内容。 @santomegonzalo 编辑了我的答案。这就是你要找的东西吗? 再次感谢,我喜欢你的最后一个想法,MailCore 的某个人已经告诉我发送推送通知,但要做到这一点,我需要为每个用户提供凭据(也许我可以保存令牌).. .但我不知道这是否正确,因为用户可能认为这不安全。你怎么看?因为如果我使用推送通知服务,我需要为每个用户收听每封新电子邮件,例如,谷歌的收听者数量是有限的。 iOS 上的推送通知通过 Apple 的服务器进行路由,并使用您为应用创建的所有证书进行保护。所以我认为你不必担心安全性。甚至服务器也需要一个键来触发推送通知。是的,您必须为每个设备保存设备令牌。是的,Google 在管理与 IMAP 的开放连接方面非常严格,但如果您管理好它们就可以了。您可以做的是,在您的服务器上只管理一个与 IMAP 的打开连接并注册 IMAP IDLE 操作。当它回复新电子邮件时,会向 Apple 服务器触发推送通知。 太好了,非常感谢@shrishaster 的帮助!

以上是关于Mailcore2 在后台的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 2 中使用 MailCore2 时出错

iOS 操作扩展中的后台任务

mailcore2如何在swift中实现它

Mailcore2 - 从特定日期开始搜索电子邮件

在 Linux 上构建 Mailcore2

如何在mailcore2中获取电子邮件正文