我正在为一个应用程序开发一个操作扩展,该扩展为用户准备一些数据,然后使用MailCore2将这些信息发送到SMTP服务器。准备数据非常快,但发送邮件可能需要一些时间(取决于其大小)。因此,我正在寻找一种在后台处理发送活动的方法。但是这会导致一些问题和不同的解决方案:
使用 URLSession。这是iOS扩展中处理大型上传或下载的首选方式。但问题是,MailCore2不使用URLSessions来传输数据到邮件服务器。所以这不可用。那么有没有可能以某种方式“包装”这个调用在URLSession中?
使用 UNUserNotificationCenter 并从扩展中发送本地通知来启动主应用程序中的发送任务。问题:只有在用户单击通知时,才会调用通知的
userNotificationCenter didReceive
方法。简单的标记通知不会调用委托方法。
使用Background Fetch。在模拟器中运作良好,但在iOS设备上连接到SMTP服务器时会出现错误。我遇到了与github.com/MailCore/mailcore2/issues/252描述的相同的HELO问题。对于此问题,一个解决方案应该是MCOSMTPSession.isUseHeloIPEnabled = true
,但这可能并不适用于所有服务器。因此也不是完美的解决方案。
有什么想法,如何处理这样的任务?或如何处理上述解决方案之一?
编辑:由于这个问题还没有得到任何回答:有什么不清楚或需要补充的信息吗?