Powiadamianie testerów o nowych kompilacjach


Opcjonalne pakiety SDK dla iOS i Androida (Firebase App Distribution) umożliwiają wyświetlanie testerom alertów w aplikacji, gdy nowe wersje aplikacji staną się dostępne do zainstalowania. Z tego przewodnika dowiesz się, jak korzystać z pakietów SDK App Distribution na iOS i Androida, aby tworzyć i dostosowywać alerty o nowych wersjach dla testerów.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.

Krok 1. Włącz interfejs API Testera App Distribution

  1. Wybierz swój projekt w konsoli Google Cloud.

  2. W sekcji Firebase App Testers API kliknij Włącz.

Krok 2. Dodaj do aplikacji App Distribution

Pakiet Android SDK App Distribution składa się z 2 bibliotek:

  • firebase-appdistribution-api – biblioteka tylko dla interfejsu API, którą możesz uwzględnić we wszystkich wariantach kompilacji.
  • firebase-appdistribution – pełna implementacja pakietu SDK (opcjonalnie).

Biblioteka tylko dla interfejsu API umożliwia wywoływanie pakietu SDK przez kod. Jeśli nie jest dostępna pełna implementacja pakietu SDK, wywołania nie będą miały żadnego wpływu.

Zadeklaruj zależność od pakietu SDK App Distribution na Androida w pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle). Aby uniknąć dołączania w wersjach Play pełnej implementacji pakietu SDK, która zawiera funkcję automatycznej aktualizacji, dodaj do wszystkich wariantów kompilacji zależność od biblioteki zawierającej tylko interfejs API. Pełną implementację pakietu SDK dodaj tylko do wariantów przeznaczonych wyłącznie do testowania przedpremierowego.

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta14")

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

Szukasz modułu biblioteki dla Kotlina? Od wersji z października 2023 roku zarówno deweloperzy Kotlina, jak i Java mogą korzystać z głównego modułu biblioteki (szczegółowe informacje znajdziesz w często zadawanych pytaniach dotyczących tej inicjatywy).

Krok 3. Skonfiguruj alerty w aplikacji

Pakiet Android SDK App Distribution udostępnia te sposoby konfigurowania alertów o kompilacji aplikacji dla testerów:

  • podstawowa konfiguracja alertów, która zawiera gotowe dialogi dotyczące aktualizacji aplikacji i logowania, wyświetlane testerom;
  • Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.

Jeśli po raz pierwszy używasz pakietu SDK Androida App Distribution, zalecamy konfigurację podstawową.

Podstawowa konfiguracja

Użyj opcji updateIfNewReleaseAvailable, aby wyświetlić gotowy dialog włączania alertów testerom, którzy nie włączyli jeszcze alertów, a potem sprawdzić, czy jest dostępna nowa wersja. Po wywołaniu metoda wykonuje tę sekwencję:

  1. Sprawdzanie, czy tester ma włączone alerty. Jeśli tester nie ma jeszcze włączonych alertów, metoda poprosi go o zalogowanie się na konto Google w usłudze App Distribution.

  2. Sprawdzanie, czy są dostępne nowe wersje, które tester może zainstalować.

  3. Wyświetla gotowy alert, który prosi testera o zaktualizowanie.

  4. Jeśli nowa kompilacja to pakiet aplikacji na Androida (AAB), przekierowuje testera do strony Google Play, aby dokończyć proces aktualizacji.

    Jeśli nowa wersja jest pakietem aplikacji na Androida (APK), pakiet SDK pobiera nową wersję w tle i po zakończeniu pobierania prosi testera o jej zainstalowanie. Pakiet SDK wysyła powiadomienia o postępie pobierania do użytkownika za pomocą NotificationManager. Możesz też dodać własny wskaźnik postępu, dołączając do zadania onProgressUpdate element obsługi updateIfNewReleaseAvailable.

Funkcję updateIfNewReleaseAvailable możesz wywołać w dowolnym momencie w aplikacji. Możesz to zrobić na przykład w metodie onResume głównej aktywności aplikacji.updateIfNewReleaseAvailable

Ten przykład sprawdza, czy tester włączył alerty i czy ma dostęp do nowej kompilacji. Jeśli te warunki są spełnione, gdy wersja jest dostępna do zainstalowania, wyświetla się okno:

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

Konfiguracja zaawansowana

Zaawansowana konfiguracja logowania

Metody signInTesterisTesterSignedIn zapewniają większą elastyczność w dostosowywaniu logowania testera, aby lepiej dopasować jego wrażenia do wyglądu i działania aplikacji.

Ten przykład sprawdza, czy tester jest już zalogowany na swoje konto App Distribution. Dzięki temu możesz wyświetlać interfejs logowania tylko testerom, którzy nie zalogowali się jeszcze w aplikacji. Gdy tester się zaloguje, możesz wywołać funkcję updateIfNewReleaseAvailable, aby sprawdzić, czy ma on dostęp do nowej wersji.

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

Gdy tester zdecyduje się kontynuować, w interfejsie logowania wywołaj funkcję 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.
});

Zaawansowana konfiguracja aktualizacji

Metody checkForNewReleaseupdateApp zapewniają większą elastyczność w dostosowywaniu momentu wyświetlenia prośby o aktualizację testerowi. Możesz też dostosować gotowe okno aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do wyglądu i działania aplikacji.

Pamiętaj, że updateApp nie wyświetla informacji o postępie pobierania. Oznacza to, że musisz zaimplementować własny wskaźnik postępu za pomocą elementu NotificationManager, wyświetlania stanu w aplikacji lub innego podejścia.

W tym przykładzie sprawdzamy, czy jest dostępna nowa wersja, a potem wyświetlamy niestandardowy interfejs. Zanim wywołasz metody checkForNewReleaseupdateApp, sprawdź, czy tester jest zalogowany, korzystając z zaawansowanej konfiguracji logowania.

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

Gdy tester zdecyduje się na przeprowadzenie aktualizacji w interfejsie użytkownika, wywołaj: updateApp()

Kotlin

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

Java

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

Krok 4. Utwórz i przetestuj implementację

Utwórz aplikację i przetestuj jej implementację, rozpowszechniając kompilację wśród testerów za pomocą konsoli Firebase.

Aby uzyskać pomoc w rozwiązywaniu typowych problemów, takich jak:App Distribution

  • Tester nie otrzymuje alertów w aplikacji
  • Testerowi wyświetla się prośba o zalogowanie się w Google więcej niż raz