Дополнительные SDK Firebase App Distribution для iOS и Android позволяют показывать тестировщикам оповещения в приложении, когда становятся доступны новые сборки. В этом руководстве рассказывается, как использовать SDK App Distribution для iOS и Android, чтобы создавать и настраивать оповещения о новых сборках для тестировщиков.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект для Android.
Шаг 1. Включите App Distribution Tester API.
Выберите проект в консоли Google Cloud.
В разделе Firebase App Testers API нажмите Включить.
Шаг 2. Добавьте App Distribution в приложение
Шаг 2. Добавьте App Distribution в приложение
Android SDK App Distribution состоит из двух библиотек:
firebase-appdistribution-api– библиотека, содержащая только API, которую можно включить во все варианты сборки.firebase-appdistribution– полная реализация SDK (необязательно).
Библиотека API-only позволяет вашему коду вызывать SDK. Если SDK не реализован полностью, вызовы не будут работать.
Объявите зависимость для App Distribution Android SDK в файле Gradle модуля (на уровне приложения), который обычно называется <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle. Чтобы в сборки Play не включалась функция автоматического обновления полной реализации SDK, добавьте зависимость библиотеки, предназначенной только для API, во все варианты сборки.
Полную реализацию SDK следует добавлять только в варианты, предназначенные исключительно для тестирования перед выпуском.
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta21")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta21")
}
Ищете модуль библиотеки для Kotlin? Начиная с октября 2023 года, разработчики, использующие Kotlin и Java, могут зависеть от основного модуля библиотеки. Подробную информацию вы найдете в разделе часто задаваемых вопросов.
Шаг 3. Настройте оповещения в приложении
App Distribution Android SDK позволяет настроить оповещения о сборках в приложении для тестировщиков следующими способами:
- Базовая конфигурация оповещений, которая включает готовые диалоговые окна для обновления приложения и входа в аккаунт.
- Расширенная конфигурация оповещений, позволяющая настраивать собственный пользовательский интерфейс.
Если вы впервые используете Android SDK App Distribution, рекомендуем выбрать базовую конфигурацию.
Базовая конфигурация
Используйте updateIfNewReleaseAvailable, чтобы показать тестировщикам, которые ещё не включили оповещения, встроенное диалоговое окно с предложением сделать это, а затем проверьте, доступна ли новая сборка. При вызове метода выполняется следующая последовательность действий:
Проверяет, включил ли тестировщик оповещения. Если тестировщик ещё не включил оповещения, метод предложит ему войти в App Distribution с помощью аккаунта Google.
Проверяет, доступны ли для установки новые сборки.
Показывает встроенное оповещение с предложением обновить приложение.
Если новая сборка – это набор Android App Bundle (AAB), тестировщик перенаправляется в Google Play, чтобы завершить обновление.
Если новая сборка представляет собой пакет приложения Android (APK), SDK скачивает ее в фоновом режиме и предлагает тестировщику установить ее по завершении скачивания. SDK отправляет пользователю уведомления о ходе скачивания с помощью
NotificationManager. Вы также можете добавить собственный индикатор выполнения, прикрепив обработчикonProgressUpdateк задачеupdateIfNewReleaseAvailable.
Вы можете вызвать updateIfNewReleaseAvailable в любой точке приложения, например
updateIfNewReleaseAvailableв методе onResume
основного действия.
В примере ниже проверяется, включил ли тестировщик оповещения и есть ли у него доступ к новой сборке. Если эти условия выполнены, то при наличии доступной для установки сборки появляется диалоговое окно.
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. Это позволяет показывать пользовательский интерфейс входа только тем тестировщикам, которые ещё не вошли в аккаунт. После входа тестировщика вы можете вызвать 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, отображения статуса в приложении или другого подхода.
В следующем примере проверяется, доступен ли новый выпуск, а затем отображается пользовательский интерфейс. Прежде чем вызывать 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.
});
Когда тестировщик решит продолжить обновление в вашем интерфейсе, вызовите 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 несколько раз