【Objective-C】MFMailComposeViewControllerをinitする前に「メールアプリが使用可能か判定する」方法【Xcode10.1対応】

こういう人に向けて発信しています。
・iOSアプリでメーラーを立ち上げたい人
・initする前に判定を行いたい人
・Objective-C中級者

#pragma mark - メーラー立ち上げる
-(void)bootMailerApp{
    
    if ([MFMailComposeViewController canSendMail]) {
        MFMailComposeViewController* mailViewController =[[MFMailComposeViewController alloc] init];
        mailViewController.mailComposeDelegate = self;
        NSLog(@"m検証:メーラーの設定あり");
    }else{
        NSLog(@"m検証:メーラーの設定なし");
    }
    
}

普通に初期化するとどうなるか?

MFMailComposeViewController* mailViewController =[[MFMailComposeViewController alloc] init];

初期化のみすると、「メールアカウントが使用できません」と
iOS標準で用意されているアラートが出て落ちることはありません。

乱暴な言い方をすれば、初期化をしてnilかどうかを
判定すれば、メールアカウント機能があるかどうかは識別可能です。

しかしながら、アラートビューよりもやりたいことがある場合は
事前に初期化する前に判定する必要があります。

    if ([MFMailComposeViewController canSendMail]) {
}

こちらの書き方であれば、
不要なアラートビューなど出てこないのでおすすめです。

いいなと思ったら応援しよう!