MFMailComposeViewControllerを使用してメールを送信する – 基本編

シェアする

Mail

MFMailComposeViewControllerを使用してメールを送信する方法を説明します。

基本的に簡単に使えるはず…ですが、iOS 8以降シミュレーターがバグっていて、シミュレーター上で実行するとクラッシュする不具合が発生しているようです(iOS 9でも確認)。

テストする場合iOSデバイスの実機が必須かもしれません。

MessageUI.frameworkの追加

MFMailComposeViewControllerを使用するには、まず始めにMessageUI.frameworkを追加する必要があります。

Xcode

「TARGETS」を選択し「Build Phases」タブの「Link Binary With Libraries」からMessageUI.frameworkを追加します。

理想のサンプルコード

メール送信の基本的なソースコードを掲載します。

iOSデバイスの実機でメールアカウントの設定が行われているならば、このコードを実行すると、ページ冒頭にあるようなメール作成画面が立ち上がるはずです(適当にボタンを一個はりつけてそのボタンをタップしたときに起動することを想定しています)。

ただしシミュレーターで実行すると以下のようなエラーが表示されてクラッシュします。

S 2016 07 29 15 16 55

調べるとiOS 8以降、iOS 9でもシミュレーターで実行するとこのエラーが発生しました。

シミュレーターエラーの回避は不可能?

このエラーに関してはstackoverflowはじめさまざまな場所で議論が行われており、シミュレーターの不具合として認識されているようです。

「MFMailComposeViewControllerを初期化してすぐに使うと発生する問題で、MFMailComposeViewControllerインスタンスをアプリ起動後すぐに生成し、メール送信後はインスタンスを作成しなおす方法が有効」という情報もありましたが、iOS 9のシミュレーターで確認したところ効果ありませんでした。

具体的には以下のEmailManagerというヘルパークラスを追加し、

AppDelegateで初期化。

ViewControllerで呼び出す。

と変更したのですが効果なしでした。

シミュレーターの不具合ということでこれ以上深追いしても益はないかもしれません。なおこの状態で審査に提出しても問題はない模様。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

シェアする

フォローする