Apple プラットフォームで App Check とデバッグ プロバイダを使用する

アプリを App Check に登録した後に、開発中のシミュレータやデバイス、継続的インテグレーション(CI)など、通常は App Check が有効と分類しない環境でアプリを実行する場合は、実際の証明書プロバイダの代わりに App Check デバッグ プロバイダを使用するデバッグビルドのアプリを作成できます。

開発でデバッグ プロバイダを使用する

開発中など、アプリをンタラクティブに実行しているときにデバッグ プロバイダを使用するには、次の操作を行います。

  1. デバッグビルドで Firebase バックエンド サービスを使用する前に、App Check デバッグ プロバイダのファクトリを作成して設定します。

    Swift

    let providerFactory = AppCheckDebugProviderFactory()
    AppCheck.setAppCheckProviderFactory(providerFactory)
    
    FirebaseApp.configure()

    Objective-C

    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    
    // Use Firebase library to configure APIs
    [FIRApp configure];
  2. Xcode プロジェクト(v11.0 以降)でデバッグ ロギングを有効にします。

    1. [Product] > [Scheme] > [Edit scheme] の順に開きます。
    2. 左側のメニューから [Run] を選択し、[Arguments] タブを選択します。
    3. [Arguments Passed on Launch] セクションで -FIRDebugEnabled を追加します。
  3. アプリを起動します。SDK がバックエンドにリクエストを送信しようとすると、ローカル デバッグ トークンがロギングされます。次に例を示します。

    [Firebase/AppCheck][I-FAA001001] Firebase App Check Debug Token:
    123a4567-b89c-12d3-e456-789012345678
  4. Firebase コンソールの [App Check] セクションで、アプリのオーバーフロー メニューから [デバッグ トークンを管理] を選択します。前の手順でロギングされたデバッグ トークンを登録します。

    [デバッグ トークンを管理] メニュー項目のスクリーンショット

トークンを登録すると、Firebase バックエンド サービスはトークンを有効なものとして受け入れます。

このトークンを使用すると、有効なデバイスでなくても Firebase リソースにアクセスできます。このトークンは他に漏らさないように注意してください。公開リポジトリには commit しないでください。登録されたトークンが不正利用された場合は、直ちに Firebase コンソールでトークンを取り消してください。

CI 環境でデバッグ プロバイダを使用する

継続的インテグレーション(CI)環境でデバッグ プロバイダを使用するには、次の手順を行います。

  1. Firebase コンソールの [App Check] セクションで、アプリのオーバーフロー メニューから [デバッグ トークンを管理] を選択します。新しいデバッグ トークンを作成します。このトークンは次の手順で必要になります。

    このトークンを使用すると、有効なデバイスでなくても Firebase リソースにアクセスできます。このトークンは他に漏らさないように注意してください。公開リポジトリには commit しないでください。登録されたトークンが不正利用された場合は、直ちに Firebase コンソールでトークンを取り消してください。

    [デバッグ トークンを管理] メニュー項目のスクリーンショット

  2. 作成したデバッグ トークンを CI システムの安全なキーストアに追加します(たとえば、GitHub Actions の暗号化されたシークレットや Travis CI の暗号化された変数に追加します)。

  3. 必要に応じて、デバッグ トークンを CI 環境内で環境変数として使用できるように CI システムを構成します。変数に APP_CHECK_DEBUG_TOKEN_FROM_CI などの名前を付けます。

  4. Xcode で、FIRAAppCheckDebugToken という名前のテストスキームと $(APP_CHECK_DEBUG_TOKEN) などに環境変数を値として追加します。

  5. デバッグ トークンを環境変数として渡すように CI テスト スクリプトを構成します。例:

    xcodebuild test -scheme YourTestScheme -workspace YourProject.xcworkspace \
    APP_CHECK_DEBUG_TOKEN=$(APP_CHECK_DEBUG_TOKEN_FROM_CI)
  6. デバッグビルドで Firebase バックエンド サービスを使用する前に、App Check デバッグ プロバイダのファクトリを作成して設定します。

    Swift

    let providerFactory = AppCheckDebugProviderFactory()
    AppCheck.setAppCheckProviderFactory(providerFactory)
    
    FirebaseApp.configure()

    Objective-C

    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    
    // Use Firebase library to configure APIs
    [FIRApp configure];

CI 環境でアプリを実行すると、Firebase バックエンド サービスは送信されたトークンを有効なトークンとして受け入れます。