嘿我正在使用此代码从我的应用程序中发送电子邮件
VNDetectRectanglesRequest
该应用程序是实时的,用户的电子邮件确实与我联系。它们通常是空的,除了"从我的iPhone发送"但我不认为这是一个编程问题。问题是,显然,上周, 8台设备因为" // CRASHES"而丢弃了崩溃报告。线。
我认为模拟器在尝试执行此操作时会崩溃,但我几周没有使用模拟器进行此安装,因此iTunesConnect上的崩溃报告是合法的崩溃。
如果用户没有安装电子邮件应用,会发生什么?
答案 0 :(得分:1)
您可以通过调用
验证用户是否设置了发送邮件的设备[MFMailComposeViewController canSendMail]
执行任何操作之前
答案 1 :(得分:1)
根据Apple文档MFMailComposeViewController
在呈现邮件撰写视图控制器之前,请始终调用
canSendMail()
方法以查看当前设备是否配置为发送电子邮件。如果用户的设备未设置为发送电子邮件,您可以通知用户或只是禁用应用程序中的电子邮件发送功能。如果canSendMail()方法返回false,则不应尝试使用此接口。
因此,使用MFMailComposeViewController()
初始化邮件撰写视图控制器将返回nil,如果用户的设备未设置为传送电子邮件,并且应用程序因为出现nil模态视图控制器而终止。
因此,在展示邮件撰写视图控制器之前,您应该检查设备的邮件设置。
所以试试这行代码
@IBAction func sendEmail(_ sender: Any) {
if !MFMailComposeViewController.canSendMail() {
print("Mail services are not available")
return
}
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
// Configure the fields of the interface.
composeVC.setToRecipients(["test@gmail.com"])
composeVC.setSubject("Feedback")
composeVC.setMessageBody("", isHTML: false)
// Present the view controller modally.
self.present(composeVC, animated: true, completion: nil) //CRASHES
}