【解決】FirebaseのPhone認証でiOSがクラッシュ!URLスキーム設定忘れに注意
Firebaseの電話番号認証を試してみたら、iOSだけで突然アプリが落ちてエラーが出たんですけど…!?

猫男

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
そう!落ち着いて設定すれば、ちゃんと解決するぞ。iOSの認証はちょっとクセがあるからな。
📝 まとめ
- Phone認証で iOS アプリがクラッシュ → URLスキーム未設定が原因
- GoogleService-Info.plist の
エンコードした App ID
を使う Info.plist
に正しく追記すれば reCAPTCHA もスムーズに動作