【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]) {
}
こちらの書き方であれば、
不要なアラートビューなど出てこないのでおすすめです。