更改默认电子邮件应用程序是否会影响MFMailComposeViewController的使用



iOS 14用户可以更改默认的电子邮件应用程序。这对MFMailComposeViewController有什么影响(如果有的话(?更具体地说,如果MFMailComposeViewController";刚刚工作";无论默认的电子邮件客户端是什么,例如设置收件人、主题、正文等。

如果这不可能,我想打开mailto URL会打开默认的邮件应用程序。在iOS 14发布之前,有什么方法可以测试一下吗?

iOS 14及其设置默认Mail应用程序的能力并没有改变MFMailComposeViewControllerAPI方面的任何内容。它只能显示Mail的撰写表,因此当他们不使用Mail应用程序时,canSendMail()仍然会返回false

为了更好地支持选择使用其他电子邮件应用程序的用户,您可以打开mailtoURL。这将打开默认的电子邮件应用程序,并显示他们的撰写表。如果未安装电子邮件应用程序,它将显示系统警报,询问用户是否要从应用商店恢复邮件(除非在模拟器中运行(。本API文档介绍了如何创建URL,包括如何指定主题、正文和其他收件人。

请注意,这将使您的应用程序可以打开邮件应用程序或其他电子邮件应用程序。如果您希望在用户使用Mail时将其保留在应用程序中,则可以继续使用MFMailComposeViewController,并在canSendMail()返回false时返回到mailto

如果您愿意,您还可以检查是否可以打开mailto:URL,如果不能,则向用户显示您自己的消息。请注意,这需要将mailto添加到Info.plist中的LSApplicationQueriesSchemes中。

我发现这篇文章也很有帮助。

if MFMailComposeViewController.canSendMail() {
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients([email])
mail.setSubject(subject)
present(mail, animated: true, completion: nil)
} else {
if let mailURLString = "mailto:(email)?subject=(subject)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
let mailURL = URL(string: mailURLString) {
if UIApplication.shared.canOpenURL(mailURL) { //check not needed, but if desired add mailto to LSApplicationQueriesSchemes in Info.plist
view.window?.windowScene?.open(mailURL, options: nil, completionHandler: nil)
} else {
//maybe they like web apps? 🤷‍♂️ 
//maybe let them copy the email address to the clipboard or something
}
}
}

相关内容

  • 没有找到相关文章

最新更新