iOS 14 用户可以更改默认电子邮件应用程序。如果有的话,这对 MFMailComposeViewController 有什么影响?更具体地说,如果 MFMailComposeViewController 与默认电子邮件客户端的任何内容“正常工作”,例如设置收件人、主题、正文等,那将是理想的。
如果这是不可能的,我想打开一个 mailto URL 将打开任何默认的邮件应用程序。有什么方法可以在 iOS 14 发布之前对此进行测试?
iOS 14 及其设置默认邮件应用程序的能力在MFMailComposeViewControllerAPI方面没有任何改变。它只能显示邮件的撰写表,因此当他们不使用邮件应用程序时canSendMail()仍会返回false。
为了更好地支持选择使用不同电子邮件应用程序的用户,您可以打开一个mailtoURL。这将打开默认的电子邮件应用程序并调出他们的撰写表。如果未安装电子邮件应用程序,它将显示系统警报,询问用户是否要从 App Store 恢复邮件(除非在模拟器中运行)。此API 文档说明了如何创建 URL,包括如何指定主题、正文和其他收件人。
请注意,这将使您的应用程序打开邮件应用程序或其他电子邮件应用程序。如果您希望用户在使用 Mail 时留在您的应用中,您可以继续使用MFMailComposeViewController并回退到mailtowhen canSendMail()Return false。
如果您愿意,您还可以检查是否可以打开mailto:URL,如果不能,则向用户展示您自己的消息。请注意,这需要mailto您LSApplicationQueriesSchemes在 Info.plist 中添加。
我发现这篇文章也很有帮助。
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |