Дополнительные SDK Firebase App Distribution для iOS и Android позволяют отображать внутри приложения оповещения для тестировщиков о появлении новых сборок вашего приложения, доступных для установки. В этом руководстве объясняется, как использовать SDK App Distribution для iOS и Android для создания и настройки оповещений о новых сборках для ваших тестировщиков.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .
Шаг 1 : Включите API средства тестирования App Distribution
Выберите свой проект в консоли Google Cloud .
В разделе Firebase App Testers API нажмите «Включить» .
Шаг 2 : Добавьте App Distribution в ваше приложение.
The App Distribution Android SDK consists of two libraries:
-
firebase-appdistribution-api— библиотека, предназначенная только для API, которую можно включать во все варианты сборки . -
firebase-appdistribution- The full SDK implementation (optional).
Библиотека, доступная только через API, позволяет вашему коду вызывать функции SDK. Эти вызовы не будут иметь никакого эффекта, если отсутствует полная реализация SDK.
Укажите зависимость от Android SDK App Distribution в файле 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-beta17")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta17")
}
Ищете модуль библиотеки, специально предназначенный для Kotlin? Начиная с релиза в октябре 2023 года , разработчики на Kotlin и Java могут использовать основной модуль библиотеки (подробнее см. в разделе часто задаваемых вопросов об этой инициативе ).
Шаг 3 : Настройка оповещений в приложении
В состав Android SDK App Distribution входят следующие способы настройки оповещений о ходе сборки для ваших тестировщиков:
- A basic alert configuration that comes with pre-built app update and sign-in dialogs to display to testers.
- Расширенные настройки оповещений, позволяющие настраивать собственный пользовательский интерфейс.
If you're using the App Distribution Android SDK for the first time, we recommend using the Basic Configuration .
Базовая конфигурация
Используйте updateIfNewReleaseAvailable , чтобы отобразить предварительно созданное диалоговое окно включения оповещений для тестировщиков, которые еще не включили оповещения, а затем проверить, доступна ли новая сборка. При вызове метод выполняет следующую последовательность действий:
Checks if a tester has enabled alerts. If the tester has not yet enabled alerts, the method prompts the tester to sign in to App Distribution with their Google account.
Checks for newly available builds for the tester to install.
Отображает предварительно созданное оповещение, предлагающее тестировщику обновить систему.
Если новая сборка представляет собой пакет приложений Android (AAB), тестировщик будет перенаправлен в Google Play для завершения процесса обновления.
Если новая сборка представляет собой APK-файл приложения Android, SDK загружает новую сборку в фоновом режиме и предлагает тестировщику установить её после завершения загрузки. SDK отправляет пользователю уведомления о ходе загрузки с помощью
NotificationManager. Вы также можете добавить собственный индикатор прогресса, прикрепив обработчикonProgressUpdateк задачеupdateIfNewReleaseAvailable.
You can call updateIfNewReleaseAvailable at any point in your app. For example, you can call updateIfNewReleaseAvailable during the onResume method of the app's main activity.
The following example checks if the tester enabled alerts and has access to a new build. If these conditions are met, a dialog is displayed when the build is available to install:
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;
}
}
});
Расширенная конфигурация
Расширенные настройки входа в систему
The methods signInTester and isTesterSignedIn give you more flexibility to customize your tester's sign-in experience, so that the tester experience can better match your app's look and feel.
В следующем примере проверяется, вошел ли тестировщик уже в свою учетную запись тестировщика App Distribution . Это позволяет отображать интерфейс входа в систему только для тестировщиков, которые еще не вошли в систему. После того, как тестировщик войдет в систему, вы можете вызвать метод 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.
});
}
From your sign-in UI, when the tester chooses to proceed, call 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 , какой-либо внутриприложный индикатор состояния или другой подход.
В следующем примере проверяется наличие новой версии, после чего отображается пользовательский интерфейс. Перед вызовом функций 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.
});
When the tester chooses to proceed with the update from your update UI, call updateApp() :
Kotlin
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
Шаг 4 : Создайте и протестируйте свою реализацию.
Build your app and test your implementation by distributing the build to testers using the Firebase console.
Visit the App Distribution Troubleshooting guide for help with common issues, such as:
- Тестировщик не получает внутриприложения уведомления
- Tester being prompted to sign in to Google more than once