Уведомляйте тестировщиков о новых сборках


Дополнительные SDK Firebase App Distribution для iOS и Android позволяют отображать внутри приложения оповещения для тестировщиков о появлении новых сборок вашего приложения, доступных для установки. В этом руководстве объясняется, как использовать SDK App Distribution для iOS и Android для создания и настройки оповещений о новых сборках для ваших тестировщиков.

Прежде чем начать

Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .

Шаг 1 : Включите API средства тестирования App Distribution

  1. Выберите свой проект в консоли Google Cloud .

  2. В разделе Firebase App Testers API нажмите «Включить» .

Шаг 2 : Добавьте App Distribution в ваше приложение.

Android SDK App Distribution состоит из двух библиотек:

  • firebase-appdistribution-api — библиотека, предназначенная только для API, которую можно включать во все варианты сборки .
  • firebase-appdistribution — Полная реализация SDK (необязательно).

Библиотека, доступная только через 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 входят следующие способы настройки оповещений о ходе сборки для ваших тестировщиков:

  • Базовая конфигурация оповещений, включающая предварительно настроенные диалоги обновления приложения и входа в систему для отображения тестировщикам.
  • Расширенные настройки оповещений, позволяющие настраивать собственный пользовательский интерфейс.

Если вы впервые используете Android SDK App Distribution , мы рекомендуем использовать базовую конфигурацию .

Базовая конфигурация

Используйте updateIfNewReleaseAvailable , чтобы отобразить предварительно созданное диалоговое окно включения оповещений для тестировщиков, которые еще не включили оповещения, а затем проверить, доступна ли новая сборка. При вызове метод выполняет следующую последовательность действий:

  1. Проверяет, включены ли у тестировщика оповещения. Если оповещения еще не включены, метод предлагает тестировщику войти в App Distribution с помощью своей учетной записи Google.

  2. Проверяет наличие новых доступных сборок для установки тестировщиком.

  3. Отображает предварительно созданное оповещение, предлагающее тестировщику обновить систему.

  4. Если новая сборка представляет собой пакет приложений Android (AAB), тестировщик будет перенаправлен в Google Play для завершения процесса обновления.

    Если новая сборка представляет собой APK-файл приложения Android, 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 более одного раза.