【发布时间】:2018-11-14 12:40:23
【问题描述】:
我正在为一个应用程序开发一个操作扩展程序,它为用户准备一些数据,然后使用 MailCore2 将此信息发送到 SMTP 服务器。准备数据的速度非常快,但发送电子邮件可能需要一些时间(取决于其大小)。这就是为什么我正在寻找一种在后台处理发送活动的方法。但这会导致不同解决方案出现一些问题:
使用 URLSession。这是在 iOS 扩展中处理大量上传或下载的第一种方法。但问题是 MailCore2 不使用 URLSessions 将数据传输到邮件服务器。所以这是不可用的。或者是否有可能以某种方式将此调用“包装”在 URLSession 中?
使用 UNUserNotificationCenter 并在数据准备好后从扩展发送本地通知。想法是在收到此通知后在主应用程序中启动发送任务。问题:仅在用户单击通知时调用通知
userNotificationCenter didReceive方法。简单的徽章通知不会调用委托方法。使用后台获取。这在模拟器中运行良好,但在 iOS 设备上连接到 SMTP 服务器时出现错误。我遇到了与github.com/MailCore/mailcore2/issues/252 中描述的相同的 HELO 问题。对于这个问题,解决方案应该是
MCOSMTPSession.isUseHeloIPEnabled = true,但这可能不适用于所有服务器。所以也不是一个完美的解决方案。
任何想法,如何处理这样的任务?或者如何处理上面提到的解决方案之一?
编辑:因为这个问题还没有得到任何答案:什么不清楚或需要哪些额外信息?
【问题讨论】:
-
嗨,我想你在这里所做的可以回答我的问题。 Can you please share your experience?
-
为什么不使用 MCOAttachment 将附件与您的电子邮件一起发送?并将您的应用设置为在后台运行。
-
如何设置应用程序在后台运行?我已经使用 MCOAttachment。我尝试使用问题中提到的三种解决方案之一。所有这些都是我实现后台活动的尝试。但它们都没有产生有效的结果。
-
问题,当扩展程序运行时,您的原始应用程序是否在后台?
-
不,应用程序没有在后台运行(或者至少不能保证)。该扩展可以访问处理其任务所需的所有代码/库。问题是:如何在后台运行这段代码(=发送邮件),让用户无需等待完成。
标签: ios swift ios-app-extension mailcore2