Android アプリに Firebase の電話番号の確認を追加する

1. 概要

Firebase 電話番号の確認(Firebase PNV または FPNV)は、電話番号を確認するためのより迅速かつ安全な方法です。SMS ベースの確認では、エンドユーザーがテキスト メッセージからコードを受け取って入力する必要がありますが、Firebase PNV では 1 回タップするだけで、接続された携帯通信会社からデバイスの SIM の電話番号を直接取得できます。これにより、エンドユーザーの負担が軽減され、SMS メッセージの配信に依存しないことで信頼性が向上し、SMS の使用時に一般的に悪用される不正行為を排除できます。

Firebase PNV ポップアップ ダイアログ

この Codelab では、Firebase 電話番号の確認を使用して、テーブルの予約を確定する前にエンドユーザーの電話番号を確認する「レストラン検索」AI 音声エージェントを構築する方法について説明します。

前提条件

  • Android Studio の最新バージョン
  • API レベル 26 以降を搭載している Android デバイスまたはエミュレータ

学習内容

  • Firebase PNV を使用して Firebase プロジェクトを設定する。
  • Firebase PNV をテストモード で使用して、請求先アカウントや実際の SIM なしでプロトタイプを作成する。
  • Firebase PNV SDK を Android アプリに統合する。
  • シングルコール API を使用して電話番号を確認する。
  • (省略可)本番環境用にアプリを準備する。

2. サンプル プロジェクトを設定する

Firebase プロジェクトを作成する

  1. Google アカウントを使用して Firebase コンソール にログインします。
  2. ボタンをクリックして新しいプロジェクトを作成し、プロジェクト名(例: Tera Bites)を入力します。
  3. [続行] をクリックします。
  4. Firebase の利用規約が表示されたら、内容を読み、同意して [続行] をクリックします。
  5. (省略可)Firebase コンソールで AI アシスタンス(「Gemini in Firebase」)を有効にします。
  6. この Codelab では Google アナリティクスは不要 なので、Google アナリティクスのオプションをオフ にします。
  7. [プロジェクトを作成] をクリックしてプロジェクトのプロビジョニングが完了するまで待ち、[続行] をクリックします。

コードをダウンロードする

次のコマンドを実行して、この Codelab のサンプルコードのクローンを作成します。

git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd codelabs/firebase-pnv-android

Android Studio で firebase-pnv-android ディレクトリを開きます。

Android プロジェクトを Firebase に接続する

  1. Firebase コンソールのプロジェクトの概要ページの中央で、Android アイコンまたは [アプリを追加] をクリックして、アプリ作成ワークフローを起動します。
  2. [Android パッケージ名] フィールドに、アプリのパッケージ名 com.google.firebase.example.fpnv を入力します。
  3. [アプリの登録] をクリックします。
  4. 手順に沿って google-services.json ファイルをダウンロードし、ダウンロードしたコードの app/ ディレクトリに移動します。
  5. [次へ] をクリックします。

Firebase AI Logic を有効にする

この Codelab では、Firebase AI Logic を使用して AI 音声エージェントを強化します。Firebase プロジェクトで Firebase AI Logic を有効にするには:

  1. Firebase コンソールで、[AI サービス] > [AI Logic] に移動します。
  2. [開始] をクリックします。
  3. [この API を使ってみる] をクリックして、Gemini Developer API を使用します。
  4. [API を有効にする] をクリックして確定します。

3. テストモードで Firebase PNV を設定する

テストモードでは、開発用のテストトークンを使用して「偽の」電話番号を確認できます。

Google システム サービスの公開ベータ版プログラムに参加する

テストモードを使用するには、開発デバイスを Google システム サービスのベータ版チャンネル に登録します。

  1. Android アプリのテスト - Google システム サービスのページに移動します。
  2. [テスターになる] をクリックします。

これで、Google システム サービスのベータ版テスターになりました。

Firebase PNV の依存関係を追加する

Android プロジェクトのコードベースでは、Firebase PNV ライブラリと Firebase AI Logic ライブラリの依存関係が /gradle/versions.toml ファイルですでに定義されています。

[versions]
# ... other dependencies
firebaseBom = "34.12.0"

[libraries]
# ... other libraries
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
firebase-ai-logic = { module = "com.google.firebase:firebase-ai" }
firebase-pnv = { module = "com.google.firebase:firebase-pnv" }

モジュール(アプリレベル)の Gradle ファイル(通常は /app/build.gradle.kts)で、Firebase PNV ライブラリの依存関係を宣言します。

dependencies {
  // ... other dependencies
  implementation(platform(libs.firebase.bom))
  implementation(libs.firebase.ai.logic)

  // Add this line
  implementation(libs.firebase.pnv)

  // ...
}

テストトークンを生成する

  1. Firebase コンソールで、[セキュリティ] > [電話番号の確認] に移動します。
  2. [テスト] タブを選択します。
  3. テスト用の電話番号の国コードを選択し、[トークンを生成] をクリックします。
  4. 生成されたトークン文字列をコピーします。

コードでテスト セッションを有効にする

  1. Android プロジェクトに戻り、ChatViewModel.kt ファイルを開いて verifyPhoneNumber() 関数を見つけます。
  2. FirebasePhoneNumberVerification クライアントを初期化してテスト セッションを有効にし、Firebase コンソールからコピーしたトークンを貼り付けます。
    suspend fun verifyPhoneNumber(): String {
        // Initialize Firebase Phone Number Verification
        val fpnv = FirebasePhoneNumberVerification.getInstance(context!!)
    
        // Enable Test session
        fpnv.enableTestSession("PASTE_THE_TOKEN_YOU_COPIED_IN_PREV_STEP")
    
        // Trigger the Firebase PNV pop up
        val response = fpnv.getVerifiedPhoneNumber().await()
        val phoneNumber = response.getPhoneNumber()
    
        return phoneNumber
    }
    

4. アプリを実行する

Firebase PNV を実装したので、アプリを実行します。

  1. Android Studio で [実行] をクリックして、Android エミュレータまたは物理デバイスでアプリを起動します。
  2. アプリが起動すると、次のような画面が表示されます。
    Firebase PNV アプリの実行
  3. [**通話を開始**] をクリックして、自己紹介します。
    Firebase PNV アプリの実行
  4. AI 音声エージェントから予約の詳細を尋ねられます。詳細を入力すると、画面を見て電話番号を確認するように求められます。
    Firebase PNV アプリの実行
  5. 完了すると、確認完了画面が表示されます。
    Firebase PNV アプリの実行
  6. [セッションを終了] をクリックして通話を終了します。

5. (省略可)本番環境モードにアップグレードする

Firebase のお支払いプランをアップグレードする

本番環境モード で Firebase PNV を使用するには、Firebase プロジェクトが従量課金制(Blaze)料金プランに登録されている必要があります。つまり、Cloud 請求先アカウントにリンクされている必要があります。

  • Cloud 請求先アカウントには、クレジット カードなどのお支払い方法が必要です。
  • Firebase と Google Cloud を初めて使用する場合は、$300 のクレジットと無料トライアル用 Cloud 請求先アカウントを利用してサービスを試せるかどうか確認してください。
  • イベントの一環としてこの Codelab を実施する場合は、Cloud クレジットが利用可能かどうかを主催者にお問い合わせください。

プロジェクトを Blaze プランにアップグレードする手順は次のとおりです。

  1. Firebase コンソールで、プランをアップグレードするために を選択します。
  2. Blaze プランを選択します。画面上の手順に沿って、Cloud 請求先アカウントをプロジェクトにリンクします。
    このアップグレードの一環として Cloud 請求先アカウントを作成する必要がある場合は、Firebase コンソールのアップグレード フローに戻ってアップグレードを完了する必要がある場合があります。

Firebase PNV 本番環境モードを有効にする

  1. アプリの SHA-256 フィンガープリントを追加します。
    1. Firebase コンソールで、[設定] > [全般] ページに移動します
    2. [マイアプリ] カードまで下にスクロールして、Android アプリを見つけます。
    3. [SHA 証明書のフィンガープリント] フィールドに、SHA-256 フィンガープリントを追加します。アプリの SHA-256 フィンガープリントを取得する方法の詳細については、クライアントの認証をご覧ください。
  2. [セキュリティ] > [電話番号の確認] に戻ります。
  3. [本番環境の設定] をクリックします。プロジェクト内のアプリの一覧が表示され、本番環境で有効になります。また、アプリを追加することもできます。
  4. OAuth ブランドのベリフィケーションとプライバシー ポリシーの審査のためにアプリを送信します。Google Cloud は、アプリとそのプライバシー ポリシーを明確かつ正確に識別していることを確認します。
    審査を開始するには、[Google Cloud で続行] をクリックします。この処理には 24 時間以上かかることがあります。
  5. ブランドの確認を待っている間に、Firebase PNV サービス固有の規約を確認します。これはコンソールにリンクされています。
  6. アプリがブランドの確認に合格したら、チェックボックスをオンにしてサービス固有の規約に同意し、[有効にする] をクリックします。

Firebase PNV が本番環境モードで有効になりました。

テストコードを削除する

Android プロジェクトで、fpnv.enableTestSession(...) 行を削除します。

Vertex AI を使用するように Firebase AI Logic を移行する

請求先アカウントでクレジットを使用している場合、Gemini Developer API で使用することはできません。ただし、Vertex AI Gemini API で使用できます。

  1. Firebase コンソールで、[AI サービス] > [AI Logic] に移動します。
  2. [設定] をクリックします。
  3. [Vertex AI Gemini API] で、[有効にする] をクリックします。
  4. Android プロジェクトで、Google AI の代わりに Vertex AI バックエンドを使用するように Firebase AI Logic の初期化を変更します。
    val model = Firebase.ai(
        backend = GenerativeBackend.vertexAI(location = "us-central1")
    ).liveModel(
        modelName = "gemini-live-2.5-flash-native-audio",
        // ... other configuration
    )
    

6. 完了

Firebase 電話番号の確認を Android アプリに統合できました。

学習した内容

  • Firebase PNV 用のプロジェクトを設定する。
  • プロトタイピングにテストモードを使用する。
  • Firebase PNV シングルコール API を実装する。
  • 本番環境モードにアップグレードする。

次のステップ