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