web-dev-qa-db-ja.com

MFMailComposeViewControllerエラー[MC]バンドルIDのメールシートアカウントのフィルタリング

私はMFMailComposeViewControllerを使用してメッセージを送信する標準機能を実行します。

私のコード:

if MFMailComposeViewController.canSendMail()
{
    let mail = MFMailComposeViewController()
    mail.mailComposeDelegate = self
    mail.setToRecipients(["[email protected]"])
    mail.setSubject("Subject")
    mail.setMessageBody("Some Text", isHTML: false)
    self.presentViewController(mail, animated: true, completion: nil)
}

コントローラーが開かず、コンソールに一度も見たことのないメッセージが表示されます。

[MC]バンドルIDのメールシートアカウントのフィルタリング:[My Bundle ID]、ソースアカウント管理:1

[MC]結果:いいえ

助けてください。

アプリケーションをテストしようとするデバイスにメールアカウントが設定されている場合、問題はありません。メールアカウントを作成してください。

2
Hope

Swift 3.0.1-4.2互換の場合

if MFMailComposeViewController.canSendMail()
{
    let mail = MFMailComposeViewController()
    mail.mailComposeDelegate = self
    mail.setToRecipients(["[email protected]"])
    mail.setSubject("Subject")
    mail.setMessageBody("Some Text", isHTML: false)
    self.present(mail, animated: true, completion: nil)
}

iOS 10.1.1を使用したデバイスでは完全に機能しますが、同じエラーが発生しました。同様の問題があり、メールComposerはシミュレーターのiOS 9でしか機能しないことがわかりました。iOS10で何らかのバグがあり、シミュレーターで現在の知識でMail Composerを実行しています。

アップデート iOS 11.4搭載のデバイスでもテストし、同じ結果を得ました。

シミュレーターでメールを開くためにこれらの呼び出しを試みましたが、機能しませんでした。動作しますが、実際のデバイスでは問題なく動作します。

UIApplication.shared.keyWindow?.rootViewController?.present(mail, animated: true)
self.navigationController?.present(mail, animated: true, completion: nil)
1
uplearnedu.com

同じ問題がありました。プレゼンターとつながりました。

UINavigationControllerからMFMailComposeViewControllerを提示する必要があります。これを試して:

self.navigationController.presentViewController(mail, animated: true, completion: nil)

それは私の問題を解決しました。

0
perpetuous

私にとって この答え は問題を解決しました。メールアカウントがアクティブな実際のデバイスで同じ問題が発生し、表示するビューコントローラーを

        let mailComposeViewController = MFMailComposeViewController()
        mailComposeViewController.mailComposeDelegate = self
        mailComposeViewController.setToRecipients([address])
        mailComposeViewController.setMessageBody(message, isHTML: false)
        mailComposeViewController.setSubject(subject)


        UIApplication.shared.keyWindow?.rootViewController?.present(mailComposeViewController, animated: true)
0
Oliver

MFMailComposeViewController.canSendMail()の値を確認すると、それがfalseであることがわかります。 ifステートメント内のコードが実行されないようにするためです。また、trueを返すには、携帯電話で1つのメールを有効にする必要があります。

0

Mail Composerを表示するには、「Mail」アプリにログインする必要があります。

0
Yisus