新しいビルドについてテスターに​​通知する

オプションの Firebase App Distribution iOS および Android SDK を使用すると、アプリの新しいビルドをインストールできるようになったときに、アプリ内アラートをテスターに​​表示できます。このガイドでは、App Distribution iOS および Android SDK を使用して、テスター向けの新しいビルド アラートを作成およびカスタマイズする方法について説明します。

あなたが始める前に

まだ行っていない場合は、 Firebase を Android プロジェクトに追加します

ステップ 1 : App Distribution Tester API を有効にする

  1. Google Cloud Consoleでプロジェクトを選択します。

  2. Firebase App Testers API で、[有効にする] をクリックします。

ステップ 2 : App Distribution をアプリに追加する

App Distribution Android SDK は、次の 2 つのライブラリで構成されています。

  • firebase-appdistribution-api - すべてのビルド バリアントに含めることができる API 専用ライブラリ。
  • firebase-appdistribution - 完全な SDK 実装 (オプション)。

API 専用ライブラリを使用すると、コードで SDK を呼び出すことができます。完全な SDK 実装が存在しない場合、呼び出しは効果がありません。

モジュール (アプリレベル) の Gradle ファイル(通常はapp/build.gradle ) で、App Distribution Android SDK の依存関係を宣言します。 Play ビルドに完全な SDK 実装の自己更新機能を含めないようにするには、API のみのライブラリ依存関係をすべてのビルド バリアントに追加します。完全な SDK 実装は、プレリリース テスト専用のバリアントにのみ追加してください。

Java

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta03'

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta03'
}

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta03'

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta03'
}

ステップ 3 : アプリ内アラートを構成する

App Distribution Android SDK は、テスター向けにアプリ内ビルド アラートを設定する次の方法を提供します。

  • テスターに​​表示する事前構築済みのアプリの更新とサインイン ダイアログに付属する基本的なアラート構成。
  • 独自のユーザー インターフェイスをカスタマイズできる高度なアラート構成。

初めて App Distribution Android SDK を使用する場合は、基本設定を使用することをお勧めします。

基本構成

updateIfNewReleaseAvailableを使用して、アラートをまだ有効にしていないテスターに​​事前構築済みのアラートを有効にするダイアログを表示し、新しいビルドが利用可能かどうかを確認します。呼び出されると、メソッドは次のシーケンスを実行します。

  1. テスターがアラートを有効にしているかどうかを確認します。テスターがまだアラートを有効にしていない場合、メソッドはテスターに​​ Google アカウントで App Distribution にサインインするように求めます。

  2. テスターがインストールするために新しく利用可能なビルドをチェックします。

  3. テスターに​​更新を促す事前構築済みのアラートを表示します。

  4. 新しいビルドが Android App Bundle (AAB) の場合、テスターを Google Play にリダイレクトして更新プロセスを完了します。

    新しいビルドが Android アプリケーションの PacKage (APK) である場合、SDK は新しいビルドをバックグラウンドでダウンロードし、ダウンロードが完了するとテスターに​​インストールを求めるプロンプトを出します。 SDK は、 NotificationManagerを使用してダウンロード進行状況通知をユーザーに送信します。 onProgressUpdateハンドラーをupdateIfNewReleaseAvailableタスクにアタッチすることで、独自の進行状況インジケーターを追加することもできます。

アプリの任意の時点でupdateIfNewReleaseAvailableを呼び出すことができます。たとえば、アプリのメイン アクティビティのonResumeメソッド中にupdateIfNewReleaseAvailableを呼び出すことができます。

次の例では、テスターがアラートを有効にし、新しいビルドにアクセスできるかどうかを確認します。これらの条件が満たされている場合、ビルドをインストールできるようになると、ダイアログが表示されます。

Java

// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
FirebaseAppDistribution firebaseAppDistribution = FirebaseAppDistribution.getInstance();
firebaseAppDistribution.updateIfNewReleaseAvailable()
    .addOnProgressListener(updateProgress -> {
      // (Optional) Implement custom progress updates in addition to
      // automatic NotificationManager updates.
    })
    .addOnFailureListener(e -> {
      // (Optional) Handle errors.
      if (e instanceof FirebaseAppDistributionException) {
        switch (((FirebaseAppDistributionException)e).getErrorCode()) {
          case NOT_IMPLEMENTED:
            // SDK did nothing. This is expected when building for Play.
            break;
          default:
            // Handle other errors.
            break;
        }
      }
    });

Kotlin+KTX

// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
firebaseAppDistribution.updateIfNewReleaseAvailable()
    .addOnProgressListener { updateProgress ->
      // (Optional) Implement custom progress updates in addition to
      // automatic NotificationManager updates.
    }
    .addOnFailureListener { e ->
      // (Optional) Handle errors.
      if (e is FirebaseAppDistributionException) {
        when (e.errorCode) {
          Status.NOT_IMPLEMENTED -> {
            // SDK did nothing. This is expected when building for Play.
          }
          else -> {
            // Handle other errors.
          }
        }
      }
    }

詳細設定

高度なサインイン構成

メソッドsignInTesterおよびisTesterSignedInを使用すると、テスターのサインイン エクスペリエンスをより柔軟にカスタマイズできるため、テスターのエクスペリエンスがアプリのルック アンド フィールによりよく適合します。

次の例では、テスターが App Distribution テスター アカウントに既にサインインしているかどうかを確認します。これにより、サインイン ユーザー インターフェイス (UI) を、まだサインインしていないテスターのみに表示するように選択できます。テスターがサインインした後、 updateIfNewReleaseAvailableを呼び出して、テスターが新しいビルドにアクセスできるかどうかを確認できます。

Java

// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn()) {
    // Start your sign-in UI here.
}

// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn()) {
    firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener( e -> {
        // Handle failed update.
    });
}

Kotlin+KTX

// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn) {
    // Start your sign-in UI here.
}

// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn) {
    firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener {
        // Handle failed update.
    }
}

サインイン UI から、テスターが続行することを選択したら、 signInTester()を呼び出します。

Java

firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
  // Handle successful sign-in.
}).addOnFailureListener(e -> {
  // Handle failed sign-in.
});

Kotlin+KTX

firebaseAppDistribution.signInTester().addOnSuccessListener {
  // Handle successful sign-in.
}.addOnFailureListener {
  // Handle failed sign-in.
});

高度な更新構成

メソッドcheckForNewReleaseおよびupdateAppを使用すると、テスターが更新を求められたときに、より柔軟にカスタマイズできます。また、ビルド済みの更新ダイアログとダウンロード進行状況インジケーターをカスタマイズして、アプリのルック アンド フィールにより適合させることもできます。

updateAppはダウンロードの進行状況を表示しないことに注意してください。これは、 NotificationManager 、ある種のアプリ内ステータス表示、またはその他のアプローチを使用して、独自の進行状況表示を実装する必要があることを意味します。

次の例では、新しいリリースが利用可能かどうかを確認し、カスタム UI を表示します。 checkForNewReleaseupdateAppを呼び出す前に、高度なサインイン構成を使用してテスターがサインインしていることを確認してください。

Java

firebaseAppDistribution.checkForNewRelease().addOnSuccessListener(release -> {
    if (release != null) {
        // New release available. Start your update UI here.
    }
}).addOnFailureListener(e -> {
    // Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
    // if built for Play.
});

Kotlin+KTX

firebaseAppDistribution.checkForNewRelease().addOnSuccessListener { release ->
    if (release != null) {
        // New release available. Start your update UI here.
    }
}.addOnFailureListener {
    // Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
    // if built for Play.
}

テスターが更新 UI から更新を続行することを選択したら、 updateApp()を呼び出します。

Java

firebaseAppDistribution.updateApp()
    .addOnProgressListener(updateState -> {
      // Use updateState to show update progress.
    });

Kotlin+KTX

firebaseAppDistribution.updateApp()
    .addOnProgressListener { updateState ->
      // Use updateState to show update progress.
    }

ステップ 4 : 実装をビルドしてテストする

Firebase コンソールを使用してビルドをテスターに​​配布することで、アプリをビルドし、実装をテストします。

次のような一般的な問題のヘルプについては、 App Distribution のトラブルシューティング ガイドにアクセスしてください。

  • テスターがアプリ内アラートを受信しない
  • テスターが Google に複数回サインインするよう求められる