我正在创建一个带有密码重置功能的iOS应用程序,该功能会向用户发送电子邮件。发送电子邮件后,我想向用户显示UIAlertController
,询问他们是否要打开邮件应用程序。
我在这里看到了各种各样的帖子:
let url = NSURL(string: "mailto:")
UIApplication.sharedApplication().openURL(url!)
这样可行,但不幸的是它会启动一条不是我想要的新消息。我只想启动应用程序,以便用户可以看到他们的收件箱。
答案 0 :(得分:23)
没有自己测试,但也许这个答案可以帮助你:
显然,Mail支持第二个网址方案
message://
,我认为它允许您在应用程序提取特定消息时打开它。如果您没有提供完整的邮件网址,则只会打开邮件:
let mailURL = NSURL(string: "message://")!
if UIApplication.sharedApplication().canOpenURL(mailURL) {
UIApplication.sharedApplication().openURL(mailURL)
}
答案 1 :(得分:1)
只需打开Mail应用的 Swift 3.0.1 方式如下:
private func openMailClient() {
let mailURL = URL(string: "message://")!
if UIApplication.shared.canOpenURL(mailURL) {
UIApplication.shared.openURL(mailURL)
}
}
As" dehlen"正确说明,如果没有提供进一步的信息,使用message://
方案只会打开邮件应用程序。
答案 2 :(得分:1)
显然几年后...我不得不为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)
}
答案 3 :(得分:0)
由于UIApplication.shared.openURL()
方法已被弃用,我们可以直接使用URL()
代替NSURL()
,因此此问题的答案的更新版本为:
let mailURL = URL(string: "message://")!
if UIApplication.shared.canOpenURL(mailURL) {
UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
}
答案 4 :(得分:0)
这将适用于 Xcode 11.5:
$commandString = @'
-NoExit -Command & {
Write-Host -ForegroundColor Green \"Hello, new window!\"
Set-Location -Path \"c:\\\"
Get-ChildItem
Start-Sleep -Seconds 3
}
'@
Start-Process -FilePath "powershell.exe" -ArgumentList $commandString