1

アプリをアプリ ストアに提出しましたが、MFMailComposeViewController を開くボタンであるフィードバック ボタンをクリックすると、アプリがクラッシュしたと言って拒否されました。私が抱えている問題は、シミュレーターと実際のデバイスの間の多くのデバイスで実行したことですが、この問題は一度もありませんでした。私が呼び出した下のフィードバックボタンの関数を投稿し、すべてボタンに接続します(テストするたびに完全に正常に動作すると言ったように)、私の質問は次のとおりです。コードで何か間違ったことをしていますか彼らだけがクラッシュする場所はどこですか?

func giveFeedback()
{
    let email = ["info@website.com"]
    var fvc = view?.window?.rootViewController
    var cev = MFMailComposeViewController()
    cev.mailComposeDelegate = self
    cev.setToRecipients(email)
    cev.setSubject("MyApp")
    fvc?.presentViewController(cev, animated: true, completion: nil)
}
func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!)
{
    controller.dismissViewControllerAnimated(true, completion: nil)
}

また、私はインポートMessageUIしました、そしてクラスには私が持っていますMFMailComposeViewControllerDelegate

4

2 に答える 2

2

1 つのことは、 canSendMailを呼び出さないことです。メールが無効になっているときに MFMailComposeViewController を表示しようとすると、アプリがクラッシュすると思います。

関数では、たとえば次のように使用します。

func giveFeedback(contextViewController: UIViewController) {

    if MFMailComposeViewController.canSendMail() {
        let email = ["info@website.com"]
        var cev = MFMailComposeViewController()
        cev.mailComposeDelegate = self
        cev.setToRecipients(email)
        cev.setSubject("MyApp")
        contextViewController.presentViewController(cev, animated: true, completion: nil)
    }
}

ただし、事前にステータスを確認し、デバイスでメールが有効になっている場合にのみボタンを表示するのが最善です...

于 2015-09-13T16:33:28.680 に答える
0

Well I will have to guess too.... There are two things that look suspicious to me... the first thing is the line

var fvc = view?.window?.rootViewController

could you change it this way?

func giveFeedback(contextViewController: UIViewController) {
    let email = ["info@website.com"]
    var cev = MFMailComposeViewController()
    cev.mailComposeDelegate = self
    cev.setToRecipients(email)
    cev.setSubject("MyApp")
    contextViewController.presentViewController(cev, animated: true, completion: nil)
}
于 2015-09-13T16:09:36.137 に答える