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

Ios 更改默认电子邮件应用程序是否会影响MFMailComposeViewController的使用?,ios,swift,ios14,Ios,Swift,Ios14,iOS 14用户可以更改默认的电子邮件应用程序。这对MFMailComposeViewController有什么影响(如果有)?更具体地说,如果MFMailComposeViewController“只处理”默认的电子邮件客户端,例如设置收件人、主题、正文等,这将是理想的 如果这是不可能的,我想打开一个mailto URL将打开任何默认的邮件应用程序。在iOS 14发布之前,有没有办法对此进行测试?iOS 14及其设置默认邮件应用程序的功能没有改变有关MFMailComposeViewContr

iOS 14用户可以更改默认的电子邮件应用程序。这对MFMailComposeViewController有什么影响(如果有)?更具体地说,如果MFMailComposeViewController“只处理”默认的电子邮件客户端,例如设置收件人、主题、正文等,这将是理想的


如果这是不可能的,我想打开一个mailto URL将打开任何默认的邮件应用程序。在iOS 14发布之前,有没有办法对此进行测试?

iOS 14及其设置默认邮件应用程序的功能没有改变有关
MFMailComposeViewController
API的任何内容。它只能显示邮件的撰写表,因此当他们不使用邮件应用程序时,
canSendMail()
仍将返回
false

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

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

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

我发现这也很有帮助

如果MFMailComposeViewController.canSendMail(){
让mail=MFMailComposeViewController()
mail.mailComposeDelegate=self
mail.setToRecipients([电子邮件])
mail.setSubject(主题)
当前(邮件,动画:真,完成:无)
}否则{
如果让mailURLString=“mailto:\(电子邮件)?subject=\(subject)”.addingPercentEncoding(使用允许的字符:.urlQueryLowed),
让mailURL=URL(字符串:mailURLString){
如果UIApplication.shared.canOpenURL(mailURL){//则不需要检查,但如果需要,请将mailto添加到Info.plist中的LSApplicationQueriesSchemes
view.window?.windowScene?.open(mailURL,选项:nil,completionHandler:nil)
}否则{

//也许他们喜欢网络应用?部分抄袭自Jordan的问题,谢谢你从开发者论坛抄袭我的问题。有趣的是,我现在有了答案。:)