Powiadamianie testerów o nowych kompilacjach


Opcjonalne pakiety SDK Firebase App Distribution na iOS i Androida umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe kompilacje aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak za pomocą pakietów SDK App Distribution na iOS i Androida tworzyć i dostosowywać alerty o nowych kompilacjach dla testerów.

Zanim zaczniesz

Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.

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

  1. Wybierz projekt w konsoli Google Cloud.

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

Krok 2. Dodaj App Distribution do aplikacji

Krok 2. Dodaj App Distribution do aplikacji

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

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

Biblioteka zawierająca tylko interfejs API umożliwia kodowi wywoływanie pakietu SDK. Wywołania nie będą miały żadnego efektu, jeśli nie będzie pełnej implementacji pakietu SDK.

Zadeklaruj zależność z pakietem Android SDK App Distribution w pliku Gradle na poziomie modułu (aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle). Aby uniknąć uwzględniania funkcji samodzielnej aktualizacji pełnej implementacji pakietu SDK w kompilacjach Play, dodaj zależność biblioteki tylko do interfejsu API do wszystkich wariantów kompilacji. Pełną implementację pakietu SDK dodawaj tylko do wariantów przeznaczonych wyłącznie do testów przedpremierowych.

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

Szukasz modułu biblioteki przeznaczonego dla języka Kotlin? Od wersji z października 2023 r. zarówno deweloperzy Kotlin, jak i Java mogą korzystać z głównego modułu biblioteki (szczegółowe informacje znajdziesz w najczęstszych pytaniach na temat tej inicjatywy).

Krok 3. Skonfiguruj alerty w aplikacji

Pakiet SDK App Distribution na Androida umożliwia skonfigurowanie alertów o kompilacjach w aplikacji dla testerów na te sposoby:

  • Podstawowa konfiguracja alertu, która zawiera gotowe okna aktualizacji aplikacji i logowania wyświetlane testerom.
  • Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.

Jeśli używasz pakietu Android SDK App Distribution po raz pierwszy, zalecamy skorzystanie z konfiguracji podstawowej.

Podstawowa konfiguracja

Użyj updateIfNewReleaseAvailable, aby wyświetlić gotowe okno włączania alertów testerom, którzy jeszcze nie włączyli alertów, a następnie sprawdź, czy jest dostępna nowa kompilacja. Po wywołaniu metoda wykonuje następującą sekwencję:

  1. Sprawdza, czy tester włączył alerty. Jeśli tester nie włączył jeszcze alertów, metoda poprosi go o zalogowanie się w aplikacji App Distribution za pomocą konta Google.

  2. Sprawdza, czy są dostępne nowe kompilacje do zainstalowania przez testera.

  3. Wyświetla gotowy alert z prośbą o aktualizację.

  4. Jeśli nowa kompilacja jest pakietem Android App Bundle (AAB), przekierowuje testera na stronę Google Play, aby dokończyć proces aktualizacji.

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

Metodę updateIfNewReleaseAvailable możesz wywołać w dowolnym momencie w aplikacji. Możesz na przykład wywołać metodę updateIfNewReleaseAvailable podczas metody onResume głównej aktywności aplikacji.

W tym przykładzie sprawdzamy, czy tester włączył alerty i ma dostęp do nowej kompilacji. Jeśli te warunki są spełnione, gdy kompilacja 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 signInTester i isTesterSignedIn dają większą elastyczność w dostosowywaniu procesu logowania testera, dzięki czemu można go lepiej dopasować do wyglądu i stylu aplikacji.

W tym przykładzie sprawdzamy, czy tester zalogował się już na swoje konto testera App Distribution. Dzięki temu możesz wyświetlać interfejs logowania tylko testerom, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz wywołać metodę updateIfNewReleaseAvailable, aby sprawdzić, czy ma on dostęp do nowej kompilacji.

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ć, wywołaj signInTester() z interfejsu logowania:

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 checkForNewRelease i updateApp zapewniają większą elastyczność w zakresie dostosowywania momentu, w którym tester jest proszony o aktualizację. Możesz też dostosować gotowe okno aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do wyglądu i stylu aplikacji.

Pamiętaj, że updateApp nie pokazuje postępu pobierania. Oznacza to, że musisz zaimplementować własny wskaźnik postępu za pomocą NotificationManager, wyświetlania stanu w aplikacji lub innego rozwiązania.

W poniższym przykładzie sprawdzamy, czy jest dostępna nowa wersja, a następnie wyświetlamy niestandardowy interfejs. Zanim wywołasz metody checkForNewRelease i updateApp, upewnij się, że 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 aktualizację w interfejsie aktualizacji, 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ę

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

Zapoznaj się z przewodnikiem rozwiązywania problemów z App Distribution, aby uzyskać pomoc w rozwiązywaniu typowych problemów, takich jak:

  • Tester nie otrzymuje alertów w aplikacji
  • Tester jest proszony o zalogowanie się w Google więcej niż raz