【发布时间】:2015-08-24 16:38:12
【问题描述】:
我正在使用 MailCore 2 iOS IMAP 源来访问 IMAP 邮件。我在其中添加了邮件文件夹列表等功能。我想为任何登录的 imap 邮件提供“退出”功能。谁能告诉我,如何清除现有的登录会话并成功退出?
【问题讨论】:
标签: ios objective-c mailcore2 mailcore
我正在使用 MailCore 2 iOS IMAP 源来访问 IMAP 邮件。我在其中添加了邮件文件夹列表等功能。我想为任何登录的 imap 邮件提供“退出”功能。谁能告诉我,如何清除现有的登录会话并成功退出?
【问题讨论】:
标签: ios objective-c mailcore2 mailcore
在您的会话中使用disconnectOperation。
示例(斯威夫特):
var op :MCOIMAPOperation = currentSession.disconnectOperation()
这会注销会话。然后,您将需要处理您的本地存储(删除您的会话对象、消息等)。 Here's some documentation on it.
【讨论】:
disconnectOperation 方法。
对我有用的示例代码
IMAPSessionHelper.swift
class IMAPSessionHelper: NSObject {
fileprivate static var privateShared: IMAPSessionHelper?
var imapSession: MCOIMAPSession!
class func shared() -> IMAPSessionHelper {
guard let uwShared = privateShared else {
privateShared = IMAPSessionHelper()
return privateShared!
}
return uwShared
}
class func destroy() {
privateShared = nil
}
private override init() {
imapSession = MCOIMAPSession()
imapSession.hostname = _IMAP_HOST_NAME
imapSession.port = _IMAP_PORT
imapSession.connectionType = .TLS
}
func config(with account: Account) {
imapSession.username = account.email
imapSession.password = account.password
}
}
退出:
fileprivate func logout() {
let logout = IMAPSessionHelper.shared().imapSession.disconnectOperation()
logout?.start({ (error) in
if let error = error {
logger(error.localizedDescription)
return
}
IMAPSessionHelper.destroy()
_ = self.navigationController?.popToRootViewController(animated: true)
})
}
【讨论】: