【スポンサーリンク】

iPhoneのGmailアプリで確認コードが入力できない?(SFSafariViewController)

iPhoneのGmailアプリで確認コードが入力できない?(SFSafariViewController)
閲覧中のユーザー数
(閲覧中のユーザー:0)
  • iPhoneのGmailアプリで確認コードを使用したログインが、SFSafariViewControllerの仕様により正常に機能しない場合があります。
  • この問題を解決するには、リンクをSafariアプリで開くか、Gmailアプリのデフォルトブラウザ設定をSafariに変更する必要があります。
  • SFSafariViewControllerはメモリ使用量を抑えるため状態保持が難しく、アプリ切り替え時にログイン情報が失われてしまいます。
特典ダウンロード
【ちいラボ読者特典】印刷してすぐ使える!
\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. 【疑問】Gmailに届いたリンクからログインできない?

iPhoneのGmailアプリを使って、メールを閲覧しています。
先日、届いたメールのリンクからログインしようとすると、うまくいきませんでした。
パスワードを入れると確認コードがGmailに送られてきたのですが、確認コードを見るとログインが始めからやり直しになってしまうのです。

【疑問】Gmailに届いたリンクからログインできない?

これは、Gmailのアプリ内ブラウザが「SFSafariViewController」という機能を使っていることが原因です。

Gmail内で起こっていたこと
  1. 「Safari」を選ぶとSFSafariViewControllerが Gmailアプリの中で起動された
  2. ログインページでID・パスワードを入力したあと、確認コードが送られた
  3. Gmailに届いた確認コードを見るためにGmailの受信トレイに戻るには、表示していたページを閉じるしかなくなっていた
【疑問】Gmailに届いたリンクからログインできない?

確認コードを見るためにGmailの受信トレイに戻ろうとすると「SFSafariViewController」の表示状態がクリアされてしまうのです。

2. 【対処法】GmailからSafariに切り替える

Gmailの受信トレイを確認するためには、ログインページが表示されたら、あらかじめ Safariで開き直すことが大事です。

画面右下にある「Safari(羅針盤)」ボタンをタップすると、独立したSafariアプリでページが開きます。
Safariアプリなら、アプリ切り替えをしても状態が保持され、Gmailと自由に行き来できるようになります。

【対処法】GmailからSafariに切り替える

独立したSafariアプリでページを開くと、画面左上に「Gmail」という戻り先の表示が出てくるね。

2-1. 【別解】リンクを長押しする方法

画面右下にある「Safari」ボタン以外に、メール本文のリンクを長押しする方法もあります。

リンク長押しメニューにある「リンクを開く」を選択すると、最初からSafariアプリでログインページを開くことができます。

2-2. 【設定】Gmailのデフォルトブラウザを設定

ただし、このように毎回 Safari で開き直すのは手間ですし、間違いのもとです。

そこで有効なのが、Gmailアプリの「デフォルトのブラウザアプリ」設定を「Safari」に変更しておくこと。
そうすると、独立した Safariアプリが開くようになります。

【設定】Gmailのデフォルトブラウザを設定

同じように「Safari」を選んでいるように見えるけど、SFSafariViewControllerを使わないんだね。

3. 【背景】GmailアプリとSFSafariViewControllerの仕組み

【背景】GmailアプリとSFSafariViewControllerの仕組み

どうして、GmailからSafariを開いたときに、ちゃんとしたSafariアプリになっていなかったの?

iPhoneのGmailアプリでリンクを開くと、アプリの中に組み込まれたブラウザ(SFSafariViewController)が起動します。

SFSafariViewController」は、iOSの特別なブラウザ機能で、アプリを離れることなくウェブページを表示するための仕組みです1
SFSafariViewController」は、Safariアプリと同じ基本技術を使っています。
アプリ切替が必要ないにもかかわらず、ログイン情報などのデータを共有できます。

ただし、安全にウェブページを閲覧できるように、元のアプリ(Gmail)とウェブページの内容は別々に管理されます。
Safariアプリと同じレベルのセキュリティ機能も持っているのです。

【背景】GmailアプリとSFSafariViewControllerの仕組み

画面左上に「完了」ボタンが表示され、アプリ切り替え時にはGmailのアイコンで表示されるのが特徴です。
画面上部のアドレスを表示する部分も、通常のSafariよりもシンプルになっています。

3-1. SFSafariViewControllerは状態を保持しない

ただし、SFSafariViewControllerには注意点があります。
メモリ使用量を抑えるため、状態を保持しにくい設計になっています。
つまり、見ているウェブページが「タブ」として残らないのです。

SFSafariViewControllerは状態を保持しない

Gmailの受信トレイに戻ると、アプリの一部として動作しているSFSafariViewControllerの状態は失われます。
メール確認後に再びログインページに戻ろうにも、最初からやり直しになってしまうのです。

3-2. 【補足】iOSのリンク処理の仕組み

【補足】iOSのリンク処理の仕組み

Gmailで開いたリンクは、どうやってSafariアプリに情報を伝えるの?

アプリ間でリンクを受け渡すのは、iOSの役割です。

Gmail(送信側)からSafari(受信側)へリンク情報を渡すときは、

  1. Gmailアプリの「デフォルトブラウザ」を設定された状態で、メール内のリンクをタップすると、リンク情報はiOSに送られます
  2. システムは設定に従ってアプリを選択し、リンク情報を渡します
  3. 受け取ったアプリが、リンク先のコンテンツを表示します
【補足】iOSのリンク処理の仕組み

アプリ間でのリンク情報の受け渡し方が変わり、ユーザー体験が微妙に変わるっているんです。

このとき、UIApplicationDelegateプロトコル がアプリ側の窓口となります。
リンクの受け渡しには、「URLスキーム」や「Universal Links」という2つの仕組みが使われます。

優先順位
  • Universal Links
    アプリとWebサイトを関連付ける仕組み
    サーバー側での設定(apple-app-site-association)が必要
  • デフォルトブラウザ設定
  • URLスキーム
    標準URLスキーム:Web閲覧用(https://など)
    カスタムURLスキーム:アプリ固有の処理用(例:myapp://)
【補足】iOSのリンク処理の仕組み

URLスキームは古くからある仕組みで、Universal Linksの方がより安全性を考慮した仕組みになっています。

こちらもどうぞ。
[iPhone]ダウンロードしたファイルはどこにある?(iOSのファイル管理)
[iPhone]ダウンロードしたファイルはどこにある?(iOSのファイル管理)
iPhone内の写真やビデオは「写真ライブラリ」に保存され、さまざまなアプリで「共有」できる仕組みになっています。しかし、iPhoneのアプリ内のデータは、基本的にアプリごとに「隔離」された保存領域(Data Container)に保存されます。ダウンロードしたデータも同様です。ただし、PDFや文書ファイルなどあとから閲覧するファイルなどは、「File Provider API」で「連携」させて、「ファイル」アプリの「ダウンロードフォルダ」に保存しています。「ファイル」アプリ...

[Gmail] 返信メールで赤いセキュリティ警告が表示された
[Gmail] 返信メールで赤いセキュリティ警告が表示された
Gmailでは、メールを暗号化して送信しています。しかし、キャリアメールなど送信先サーバによっては、TLSに対応していないこともあります。暗号化されていないメールは、途中経路で第三者に内容を見られる危険性があります。プライバシーに関わる情報は含めないようにしましょう。

[iCloud]「このブラウザは現在サポートされていません。」でアクセスできない?【アプリ内ブラウザ】
[iCloud]「このブラウザは現在サポートされていません。」でアクセスできない?【アプリ内ブラウザ】
iCloud.comにアクセスしようとしたら、「サポートされていない」というメッセージが出て進めませんでした。どうすればよいでしょうか?LINEメッセージのリンクから iCloudにアクセスしようとすると、エラーになることがあります。「アプリ内ブラウザ」で開かれるからです。通常は、「ブラウザで開く」で 標準ブラウザの「Safari」から開き直せます。しかし、iCloud.com はちょっと違って、URLを正しく直す必要があります。LINEのリンクやチラシのQRコードからウェブ...

見ているページをLINEで共有したら「安全ではない」と警告されることがある(広告配信プラットフォームのドメイン変更)
見ているページをLINEで共有したら「安全ではない」と警告されることがある(広告配信プラットフォームのドメイン変更)
LINEで共有したURLに対して、「安全ではない」という警告が表示されました。表示される原因は、ページ内に含まれる広告の一部に古い広告配信サービスのリンクが含まれていたためです。広告配信プラットフォームのドメイン変更に伴う一時的な現象で、マルウェアなどの危険性はなさそうです。家族に共有したURLが「安全ではない」?先日、見ているウェブページのURLを共有して、家族にLINEで送りました。確認のために貼ったURLをタップすると、正常にサイトにアクセスできました。ところが、何度か...

「確認コード」を捨てて良い理由(OTP)
「確認コード」を捨てて良い理由(OTP)
「確認コード」は、スマートフォンに送られてくる一時的な認証用の数字です。「なりすまし」を防ぐための「折り返し連絡」と同じような本人確認の仕組みで、パスワード確認を補強する意味があります。確認コードは一度使用したら不要になりますが、予期せぬコードを受け取った場合には、理由を確認しておく必要があります。身元を確認する「折り返し連絡」スマートフォンを使っていると、メッセージにランダムな数字が書かれた「確認コード」が送られて来ることがあります。確認コードは短い文字列で突然送られてくる...

(補足)

  1. 「SFSafariViewController」は、SafariServicesフレームワークの一部分です。この API を使用することで、ユーザーはApp内でウェブページまたはウェブサイトを閲覧することができます。また、パスワードの自動入力、リーダー、セキュアブラウジングなどの機能を含むSafariと同様のウェブブラウジング体験を、Appを終了させることなく提供できます。Safariに移動することなくApp内でウェブサイトを表示する場合、SFSafariViewControllerを使用するのがベストな方法です。このAPIを使用することで、Safariのインターフェイスをはじめとして、Safariの主要な機能とプライバシー保護をアプリケーション内に効果的に統合することができます。 – Appにおけるウェブビューを実現するには、WKWebViewとSFSafariViewControllerのどちらを使うべきですか – 見つける – Apple Developer
QRコードを読み込むと、関連記事を確認できます。

iPhoneのGmailアプリで確認コードが入力できない?(SFSafariViewController)
【スポンサーリンク】
タイトルとURLをコピーしました