AAAなブログ

あなたの求めているものは、ここにはない!

iOS 14 でメール作成の仕様はどうすべきなのか?

 

アプリにお問い合わせ窓口を作るとする。

設定画面で「メールでお問い合わせ」をタップしたらメール作成画面に遷移する、というイメージですよね。

 

 

でも、ひと口にメール作成画面と言ってもいくつかのパターンがあります。

- アプリ内でメール作成する

- 別のアプリに飛ばす

 

本エントリーでは、開発者にとってそしてユーザ側にも自然で正しい仕様について考えてみます。

 

 

iOS 14 でのメールApp周りの変更点

「デフォルトメールApp」をユーザ側で選択できるようになりました。

例えば GoogleGmail だったり MicrosoftOutlook をデフォルトに設定できます。

デフォルトの定義って何だっけ?と思った方、するどい。

mailto URLスキームで呼び出されるアプリがデフォルトと思っていいはずです。

Webブラウザでメールリンク踏んだ時にメール作成画面が起動するアプリです。

 

 

1. よくある仕様

アプリの設定画面とかからメール送信するために、よくある仕様。

MessageUI フレームワークでメール作成画面を表示する。つまり、AppleのメールAppで送信することになる。

- メリット: App内のモーダルで完結するので使いやすい。

- デメリット: メールAppがインストールされている必要がある。

 

ちなみに GmailをデフォルトメールAppに設定していて、かつAppleのメールAppをアンインストールしている場合、OSによって「メールをインストールしますか?」のアラートが表示される仕様となっている。

 

これはないよね。何のためのデフォルトメールAppなの?ってなっちゃう。

 

 

2. デフォルトメールAppを利用する仕様

これは簡単です。

UIKit の open() で mailto URLスキームを投げるだけ。

- メリット: 実装が超簡単。

- デメリット: Appleのメールを利用しているユーザの場合でも、別アプリに飛ばされちゃう。

 

 

3. ちょっとひねった仕様

ちょっと複雑になるんだけどこんなのも考えてみた。

もしAppleのメールAppが利用可能であれば、アプリ内でモーダルで送信。

もし利用不可なら URLスキームでアプリ連携する。

- メリット: ほとんどのユーザにはいい感じで動作する

- デメリット: 次のようなユーザでは問題がある。

 

 

問題のあるケース

- デフォルトメールAppはGmailに設定している。

- Gmail アプリのメールアカウントにはGmailを設定しており、普段のメール送信にはGmailを利用している。

- AppleのメールAppもインストールしており、こちらは appleiCloudメールを設定している。

- iCloudメールは全く利用していない。

 

こんな人いるかな笑

まあ、あくまでもモデルケースです。

この方の場合、アプリからのお問い合わせはGmailを利用するのが自然ですよね。

アプリ側の判断で iCloudメールの作成画面を開いちゃうとユーザは混乱します。

 

 

結論

つーか俺自身、結論は出てない。

とりあえずだけど、自分は3の方針でやってます。

ユーザビリティ的にはバランスがいいのかなと。

今後、iOS側の仕様変更、挙動変更とかもあるかもしれないし、じっくりウォッチしていきたいと思っています。

 

設定されている デフォルトメールapp を取得できるAPIなんてなさそうだし・・・