earthpg:GAS専門のプログラミングスクール

【解決】FirebaseのPhone認証でiOSがクラッシュ!URLスキーム設定忘れに注意

Firebaseの電話番号認証を試してみたら、iOSだけで突然アプリが落ちてエラーが出たんですけど…!?
猫男
猫男
catman
catman
お、それはURLスキームの設定忘れが原因かも!よし、catmanが順を追って解説するぞ!

🔍 発生するエラー内容

Firebase Auth の Phone 認証を実行した際に、iOS で次のようなエラーが出ることがあります:

 FirebaseAuth/PhoneAuthProvider.swift:111: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value Lost connection to device. the Dart compiler exited unexpectedly. 

✅ 突然アプリがクラッシュし、Flutter 側のビルドも失敗してしまいます。

💥 原因:reCAPTCHAのリダイレクトURLスキームが未設定

このエラーの原因は、

「iOS側の URLスキーム未設定 のため、reCAPTCHA 認証のリダイレクト処理が行えずにクラッシュする」

ということです。

FirebaseのPhone認証では、アプリがreCAPTCHAにアクセスし、認証が終わったら自分に戻ってくる仕組みになっています。
この“戻ってくるアドレス”が設定されていないと、認証完了後にアプリが迷子になって落ちてしまうんです。

✅ 解決方法:Info.plist にURLスキームを追加する

以下のコードを ios/Runner/Info.plist に追記しましょう:

 <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <!-- ↓ここに REVERSED_CLIENT_ID を入れる --> <string>com.googleusercontent.apps.XXXXXXXXXXXX-abcdefg</string> </array> </dict> </array> 

🔑 補足:「エンコードした App ID」はどこにある?

エンコードした App IDはFirebaseのプロジェクト管理画面でiOSアプリを選択して確認。

app-から始まるものです。

 

えっ、それだけで直るんですか!?もっと複雑かと思ってました…!
猫男
猫男
catman
catman
そう!落ち着いて設定すれば、ちゃんと解決するぞ。iOSの認証はちょっとクセがあるからな。

📝 まとめ

  • Phone認証で iOS アプリがクラッシュ → URLスキーム未設定が原因
  • GoogleService-Info.plistエンコードした App ID を使う
  • Info.plist に正しく追記すれば reCAPTCHA もスムーズに動作