[英]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)
}
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.