Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

Прежде чем вы начнете

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

Шаг 1. Включите API-интерфейс App Distribution Tester.

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

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

Шаг 2. Добавьте распространение приложений в свое приложение.

Android SDK для распространения приложений состоит из двух библиотек:

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

Библиотека только для API позволяет вашему коду вызывать SDK. Вызовы не будут иметь никакого эффекта, если полная реализация SDK отсутствует.

Объявите зависимость для Android SDK для распространения приложений в файле Gradle вашего модуля (на уровне приложения) (обычно app/build.gradle ). Чтобы избежать включения функции самообновления полной реализации SDK в сборки Play, добавьте зависимость библиотеки только от API во все варианты сборки . Добавляйте полную реализацию SDK только в варианты, предназначенные исключительно для предварительного тестирования:

Java

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta05'

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta05'
}

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta05'

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta05'
}

Шаг 3. Настройте оповещения в приложении.

App Distribution Android SDK предоставляет следующие способы настройки предупреждений о сборке в приложении для ваших тестировщиков:

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

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

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

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

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

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

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

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

    Если новая сборка представляет собой пакет приложений Android (APK), SDK загружает новую сборку в фоновом режиме и предлагает тестировщику установить ее после завершения загрузки. SDK отправляет пользователю уведомления о ходе загрузки с помощью NotificationManager . Вы также можете добавить свой собственный индикатор выполнения, присоединив обработчик onProgressUpdate к задаче updateIfNewReleaseAvailable .

Вы можете вызвать updateIfNewReleaseAvailable в любой момент вашего приложения. Например, вы можете вызвать updateIfNewReleaseAvailable во время метода onResume основного действия приложения.

В следующем примере проверяется, включил ли тестер оповещения и имеет ли он доступ к новой сборке. Если эти условия соблюдены, отображается диалоговое окно, когда сборка доступна для установки:

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;
        }
      }
    });

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.
          }
        }
      }
    }

Расширенная конфигурация

Расширенная конфигурация входа

Методы signInTester и isTesterSignedIn предоставляют больше гибкости для настройки процесса входа тестировщика, чтобы он лучше соответствовал внешнему виду вашего приложения.

В следующем примере проверяется, вошел ли тестировщик в свою учетную запись тестировщика App Distribution. Это позволяет отображать пользовательский интерфейс входа только для тестировщиков, которые еще не вошли в систему. После входа тестировщика вы можете вызвать updateIfNewReleaseAvailable , чтобы проверить, есть ли у тестировщика доступ к новой сборке.

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.
    });
}

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.
    }
}

В пользовательском интерфейсе входа, когда тестер решит продолжить, вызовите signInTester() :

Java

firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
  // Handle successful sign-in.
}).addOnFailureListener(e -> {
  // Handle failed sign-in.
});

Kotlin+KTX

firebaseAppDistribution.signInTester().addOnSuccessListener {
  // Handle successful sign-in.
}.addOnFailureListener {
  // Handle failed sign-in.
});

Расширенная конфигурация обновления

Методы checkForNewRelease и updateApp обеспечивают большую гибкость в настройке, когда тестировщику предлагается выполнить обновление. Вы также можете настроить предварительно созданный диалог обновления и индикатор загрузки, чтобы они лучше соответствовали внешнему виду вашего приложения.

Обратите внимание, что updateApp не предоставляет индикацию хода загрузки. Это означает, что вам нужно реализовать собственную индикацию прогресса с помощью NotificationManager , какого-либо отображения состояния в приложении или какого-либо другого подхода.

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

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.
});

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.
}

Когда тестер решит продолжить обновление из вашего пользовательского интерфейса обновления, вызовите updateApp() :

Java

firebaseAppDistribution.updateApp()
    .addOnProgressListener(updateState -> {
      // Use updateState to show update progress.
    });

Kotlin+KTX

firebaseAppDistribution.updateApp()
    .addOnProgressListener { updateState ->
      // Use updateState to show update progress.
    }

Шаг 4 : Создайте и протестируйте свою реализацию

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

Посетите руководство по устранению неполадок при распространении приложений , чтобы получить помощь в решении распространенных проблем, таких как:

  • Тестер не получает оповещения в приложении
  • Тестировщику предлагается войти в Google более одного раза