オプションの Firebase App Distribution iOS SDK と Android SDK を使用すると、アプリの新しいビルドがインストール可能になった場合にアプリ内アラートをテスターに表示できます。このガイドでは、App Distribution iOS SDK と Android SDK を使用してテスター向けの新しいビルドアラートを作成する方法と、それをカスタマイズする方法について説明します。
始める前に
まだ Firebase を Android プロジェクトに追加していない場合は追加します。
ステップ 1: App Distribution Tester API を有効にする
Google Cloud コンソールでプロジェクトを選択します。
[Firebase App Testers API] で [有効にする] をクリックします。
ステップ 2: アプリに App Distribution を追加する
App Distribution Android SDK は、次の 2 つのライブラリで構成されています。
firebase-appdistribution-api
- API のみのライブラリ。すべてのビルド バリアントに含めることができます。firebase-appdistribution
- SDK の完全な実装(オプション)。
API のみのライブラリを使用すると、コードから SDK を呼び出せます。SDK の完全な実装がない場合、この呼び出しは無視されます。
App Distribution Android SDK の依存関係は、モジュール(アプリレベル)の Gradle ファイル(通常は <project>/<app-module>/build.gradle.kts
または <project>/<app-module>/build.gradle
)で宣言します。SDK の完全な実装にある自己更新機能が Play ビルドに含まれないようにするには、API のみのライブラリの依存関係をすべてのビルド バリアントに追加します。SDK の完全な実装は、リリース前のテスト専用のバリアントにのみ追加してください。
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta14")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta14")
}
Kotlin 固有のライブラリ モジュールをお探しの場合、2023 年 10 月のリリース以降は、Kotlin と Java のどちらのデベロッパーもメイン ライブラリ モジュールを利用できるようになります(詳しくは、このイニシアチブに関するよくある質問をご覧ください)。
ステップ 3: アプリ内アラートを構成する
App Distribution Android SDK でテスター向けのアプリ内ビルドアラートを設定するには、次の方法があります。
- 基本アラート構成: テスターに対して表示される、アプリのアップデートとログインのための事前構築済みのダイアログが含まれます。
- 詳細アラート構成: 独自のユーザー インターフェースをカスタマイズできます。
App Distribution Android SDK を初めて使用する場合は、基本的な構成を使用することをおすすめします。
基本的な構成
updateIfNewReleaseAvailable
を使用して、アラートをまだ有効にしていないテスターに対して事前構築済みの有効化アラート ダイアログを表示し、新しいビルドが提供されているかどうかを確認します。このメソッドを呼び出すと、このメソッドにより次のシーケンスが実行されます。
テスターがアラートを有効にしているか確認します。テスターがまだアラートを有効にしていない場合、Google アカウントを使用して App Distribution にログインするよう促すプロンプトがテスターに表示されます。
対象のテスター向けの新しいインストール ビルドがあるかどうか確認します。
事前構築済みのアラートをテスターに表示して、アップデートを促します。
新しいビルドが Android App Bundle(AAB)の場合、テスターは Google Play にリダイレクトされ、そこでアップデート プロセスを完了します。
新しいビルドが Android Application Package(APK)の場合、SDK はバックグラウンドで新しいビルドをダウンロードします。ダウンロードが完了すると、インストールを促すプロンプトがテスターに表示されます。SDK は
NotificationManager
を使用して、ダウンロードの進行状況の通知をユーザーに送信します。onProgressUpdate
ハンドラをupdateIfNewReleaseAvailable
タスクにアタッチして独自の進行状況インジケーターを追加することもできます。
アプリの任意の場所で updateIfNewReleaseAvailable
を呼び出すことができます。たとえば、アプリのメイン アクティビティの onResume
メソッドの実行中に、updateIfNewReleaseAvailable
を呼び出すことができます。
次の例では、テスターがアラートを有効にしているかどうか、また、新しいビルドにアクセスできるかどうかを確認します。それらの条件が満たされている場合、ビルドのインストールが可能になるとダイアログが表示されます。
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.
}
}
}
}
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;
}
}
});
詳細構成
ログインの詳細構成
signInTester
メソッドと isTesterSignedIn
メソッドを使用すると、テスターのログイン エクスペリエンスを柔軟にカスタマイズでき、操作感をアプリのデザインに合わせることができます。
次の例では、テスターが App Distribution テスター アカウントにすでにログインしているかどうかを確認します。これにより、まだログインしていないテスターにのみログイン ユーザー インターフェース(UI)を表示できます。テスターがログインしたら、updateIfNewReleaseAvailable
を呼び出して、テスターが新しいビルドにアクセスできるかどうかを確認します。
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.
}
}
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.
});
}
ログイン UI でテスターが続行を選択したときに signInTester()
を呼び出します。
Kotlin+KTX
firebaseAppDistribution.signInTester().addOnSuccessListener {
// Handle successful sign-in.
}.addOnFailureListener {
// Handle failed sign-in.
});
Java
firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
// Handle successful sign-in.
}).addOnFailureListener(e -> {
// Handle failed sign-in.
});
アップデートの詳細構成
checkForNewRelease
メソッドと updateApp
メソッドを使用すると、テスターにアップデートを促す際のプロンプトを柔軟にカスタマイズできます。また、事前構築済みのアップデート ダイアログやダウンロード進行状況インジケーターをカスタマイズして、アプリのデザインに合わせることもできます。
なお、updateApp
にはダウンロードの進行状況を示す機能はありません。したがって、NotificationManager
を使用するか、なんらかのアプリ内ステータス表示を使用するか、または他のアプローチを使用して、独自の進行状況表示を実装する必要があります。
次の例では、新しいリリースが提供されているかどうかを確認してから、カスタム UI を表示します。checkForNewRelease
と updateApp
を呼び出す前にログインの詳細構成を使用して、テスターがログインしていることを確認してください。
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.
}
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.
});
アップデート UI でテスターがアップデートの続行を選択したときに updateApp()
を呼び出します。
Kotlin+KTX
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
ステップ 4: 実装をビルドしてテストする
アプリをビルドし、Firebase コンソールを使用してテスターにビルドを配布して実装をテストします。
次のような一般的な問題については、App Distribution のトラブルシューティング ガイドをご覧ください。
- テスターがアプリ内アラートを受信できない
- テスターが Google へのログインを複数回求められる