繁体   English   中英

如何在 Swift 中启动 iOS 邮件应用程序?

[英]How to launch the iOS mail app in Swift?

我正在创建一个带有密码重置功能的 iOS 应用程序,该功能向用户发送电子邮件。 发送电子邮件后,我想向用户显示一个UIAlertController ,询问他们是否要打开邮件应用程序。

我在这里看到了各种帖子:

let url = NSURL(string: "mailto:")
UIApplication.sharedApplication().openURL(url!)

这有效,但不幸的是它开始了一条新消息,这不是我想要的。 我只想启动应用程序,以便用户可以看到他们的收件箱。

没有测试过自己,但也许这个答案会帮助你:

显然,Mail 支持第二个 url 方案message:// ,如果它是由您的应用程序获取的,则它(我想)允许您打开特定的消息。 如果您不提供完整的邮件 url,它只会打开邮件:

let mailURL = URL(string: "message://")!
if UIApplication.shared.canOpenURL(mailURL) {
    UIApplication.shared.openURL(mailURL)
}

摘自: 从我自己的应用程序中启动 Apple Mail App?

Swift 3.0.1打开邮件应用程序的方式如下:

private func openMailClient() {
    let mailURL = URL(string: "message://")!
    if UIApplication.shared.canOpenURL(mailURL) {
        UIApplication.shared.openURL(mailURL)
    }
}

正如“dehlen”正确指出的那样,如果没有提供更多信息,使用message://方案只会打开邮件应用程序。

显然几年后......我不得不为 Xcode 10.2.1 swift 5 添加一个完成处理程序。

这完美地工作-

    let emailURL = NSURL(string: "message://")!

    if UIApplication.shared.canOpenURL(emailURL as URL)
    {
        UIApplication.shared.open(emailURL as URL, options: [:],completionHandler: nil)
    }

由于UIApplication.shared.openURL()方法已被弃用,我们可以直接使用URL()代替NSURL() ,此问题答案的更新版本是:

let mailURL = URL(string: "message://")!
if UIApplication.shared.canOpenURL(mailURL) {
    UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
}

这将适用于 Xcode 11.5:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch indexPath.row {     
    case 5:
        openEmailApp(email: "email@gmail.com")
        
    default:
        break
    }
}

func openEmailApp(email: String) {
    if let url = URL(string: "mailto: \(email)") {
        UIApplication.shared.open(url)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM