您可以選擇使用 iOS 和 Android SDK,在有新版應用程式可供安裝時,向測試人員顯示應用程式內快訊。Firebase App Distribution本指南說明如何使用 App Distribution iOS 和 Android SDK,為測試人員建立及自訂新版建構作業的快訊。
事前準備
如果您尚未將 Firebase 新增至 Android 專案,請先新增。
步驟 1:啟用 App Distribution 測試人員 API
在 Google Cloud 控制台中選取專案。
在 Firebase App Testers API 下方,按一下「啟用」。
步驟 2:在應用程式中新增 App Distribution
App Distribution Android SDK 包含兩個程式庫:
firebase-appdistribution-api
- 僅限 API 的程式庫,可納入所有建構變數。firebase-appdistribution
- 完整 SDK 實作 (選用)。
程式碼可透過僅含 API 的程式庫呼叫 SDK。如果沒有完整導入 SDK,這些呼叫不會產生任何作用。
在模組 (應用程式層級) Gradle 檔案 (通常為 <project>/<app-module>/build.gradle.kts
或 <project>/<app-module>/build.gradle
) 中,宣告 App Distribution Android SDK 的依附元件。為避免在 Play 建構作業中加入完整的 SDK 實作項目自我更新功能,請將僅含 API 的程式庫依附元件新增至所有建構變體。請只將完整 SDK 實作項目新增至專為預先發布測試設計的變體。
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta16")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta16")
}
想尋找 Kotlin 專屬的程式庫模組嗎?自 2023 年 10 月發布版本起,Kotlin 和 Java 開發人員都可以依附主要程式庫模組 (詳情請參閱這項計畫的常見問題)。
步驟 3:設定應用程式內快訊
App Distribution Android SDK 提供下列方式,為測試人員設定應用程式內建構版本快訊:
- 基本快訊設定,內建應用程式更新和登入對話方塊,可向測試人員顯示。
- 進階快訊設定,可自訂使用者介面。
如果您是首次使用 App Distribution Android SDK,建議使用基本設定。
基本設定
使用 updateIfNewReleaseAvailable
向尚未啟用快訊的測試人員顯示預先建構的啟用快訊對話方塊,然後檢查是否有新版本。呼叫時,這個方法會執行下列序列:
檢查測試人員是否已啟用快訊。如果測試人員尚未啟用快訊,這個方法會提示測試人員登入 App Distribution Google 帳戶。
檢查是否有可供測試人員安裝的新建構版本。
顯示預先建構的快訊,提示測試人員更新。
如果新版本是 Android App Bundle (AAB),系統會將測試人員重新導向至 Google Play,完成更新程序。
如果新版本是 Android 應用程式套件 (APK),SDK 會在背景下載新版本,並在下載完成時提示測試人員安裝。SDK 會使用
NotificationManager
將下載進度通知傳送給使用者。您也可以將onProgressUpdate
處理常式附加至updateIfNewReleaseAvailable
工作,藉此新增自己的進度指標。
您可以在應用程式中的任何時間點呼叫 updateIfNewReleaseAvailable
。舉例來說,您可以在應用程式主要活動的 onResume
方法中呼叫 updateIfNewReleaseAvailable
。
以下範例會檢查測試人員是否已啟用快訊,以及是否能存取新版本。如果符合這些條件,當可安裝的建構版本推出時,系統就會顯示對話方塊:
Kotlin
// 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
// 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.
});
}
在登入使用者介面中,當測試人員選擇繼續時,請呼叫 signInTester()
:
Kotlin
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
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
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 帳戶