Powiadamiaj testerów o nowych kompilacjach

Opcjonalne zestawy SDK Firebase App Distribution dla systemów iOS i Android umożliwiają wyświetlanie testerom alertów w aplikacji, gdy będą dostępne do zainstalowania nowe wersje Twojej aplikacji. W tym przewodniku wyjaśniono, jak używać zestawów SDK dystrybucji aplikacji dla systemów iOS i Android do tworzenia i dostosowywania alertów o nowych kompilacjach dla testerów.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .

Krok 1 : Włącz interfejs API testera dystrybucji aplikacji

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

  2. W obszarze API testerów aplikacji Firebase kliknij opcję Włącz .

Krok 2 : Dodaj dystrybucję aplikacji do swojej aplikacji

Zestaw SDK aplikacji do dystrybucji aplikacji dla systemu Android składa się z dwóch bibliotek:

  • firebase-appdistribution-api — biblioteka przeznaczona wyłącznie do interfejsu API, którą można uwzględnić we wszystkich wariantach kompilacji .
  • firebase-appdistribution — pełna implementacja pakietu SDK (opcjonalnie).

Biblioteka przeznaczona wyłącznie do interfejsu API umożliwia kodowi wykonywanie wywołań do zestawu SDK. Wywołania nie będą miały żadnego efektu, jeśli nie będzie dostępna pełna implementacja pakietu SDK.

Zadeklaruj zależność dla zestawu SDK systemu Android do dystrybucji aplikacji w pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle ). Aby uniknąć włączania funkcji samodzielnej aktualizacji pełnej implementacji pakietu SDK do kompilacji Play, dodaj zależność biblioteki obsługującej tylko interfejs API do wszystkich wariantów kompilacji . Dodawaj pełną implementację pakietu SDK tylko do wariantów przeznaczonych wyłącznie do testów przed wydaniem.

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

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

Szukasz modułu bibliotecznego specyficznego dla Kotlina? Począwszy od wydania z października 2023 r ., zarówno programiści Kotlin, jak i Java mogą polegać na głównym module biblioteki (więcej informacji można znaleźć w często zadawanych pytaniach dotyczących tej inicjatywy ).

Krok 3 : Skonfiguruj alerty w aplikacji

Zestaw SDK do dystrybucji aplikacji dla systemu Android udostępnia następujące sposoby konfigurowania alertów kompilacji w aplikacji dla testerów:

  • Podstawowa konfiguracja alertów zawierająca wstępnie utworzone okna dialogowe aktualizacji aplikacji i logowania wyświetlane testerom.
  • Zaawansowana konfiguracja alertów, która pozwala dostosować własny interfejs użytkownika.

Jeśli po raz pierwszy korzystasz z zestawu SDK App Distribution dla systemu Android, zalecamy skorzystanie z konfiguracji podstawowej .

Podstawowa konfiguracja

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

  1. Sprawdza, czy tester włączył alerty. Jeśli tester nie włączył jeszcze alertów, metoda poprosi testera o zalogowanie się do aplikacji App Distribution przy użyciu konta Google.

  2. Sprawdza, czy tester ma nowe kompilacje do zainstalowania.

  3. Wyświetla gotowy alert zachęcający testera do aktualizacji.

  4. Jeśli nowa kompilacja to pakiet aplikacji na Androida (AAB), przekierowuje testera do Google Play w celu dokończenia procesu aktualizacji.

    Jeśli nowa kompilacja jest pakietem aplikacji dla systemu Android (APK), zestaw SDK pobiera nową kompilację w tle i monituje testera o zainstalowanie po zakończeniu pobierania. SDK wysyła powiadomienia o postępie pobierania do użytkownika za pomocą NotificationManager . Możesz także dodać własny wskaźnik postępu, dołączając procedurę obsługi onProgressUpdate do zadania updateIfNewReleaseAvailable .

Możesz wywołać updateIfNewReleaseAvailable w dowolnym momencie aplikacji. Na przykład możesz wywołać updateIfNewReleaseAvailable podczas metody onResume głównego działania aplikacji.

Poniższy przykład sprawdza, czy tester włączył alerty i ma dostęp do nowej kompilacji. Jeśli te warunki zostaną spełnione, wyświetli się okno dialogowe, gdy kompilacja będzie dostępna do zainstalowania:

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

Zaawansowana konfiguracja

Zaawansowana konfiguracja logowania

signInTester i isTesterSignedIn zapewniają większą elastyczność w dostosowywaniu sposobu logowania testera, dzięki czemu środowisko testera może lepiej odpowiadać wyglądowi i działaniu aplikacji.

Poniższy przykład sprawdza, czy tester zalogował się już na swoje konto testera w dystrybucji aplikacji. Dzięki temu możesz wybrać wyświetlanie interfejsu użytkownika (UI) logowania tylko testerom, którzy jeszcze się nie zalogowali. Po zalogowaniu się testera możesz wywołać funkcję updateIfNewReleaseAvailable , aby sprawdzić, czy tester ma dostęp do nowej kompilacji.

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

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

Zaawansowana konfiguracja aktualizacji

Metody checkForNewRelease i updateApp zapewniają większą elastyczność dostosowywania, gdy tester zostanie poproszony o aktualizację. Możesz także dostosować gotowe okno dialogowe aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do ​​wyglądu i stylu Twojej aplikacji.

Należy pamiętać, że updateApp nie udostępnia informacji o postępie pobierania. Oznacza to, że musisz zaimplementować własne wskazanie postępu za pomocą NotificationManager , jakiegoś rodzaju wyświetlania stanu w aplikacji lub innego podejścia.

Poniższy przykład sprawdza, czy dostępna jest nowa wersja, a następnie wyświetla niestandardowy interfejs użytkownika. Przed wywołaniem checkForNewRelease i updateApp upewnij się, że tester jest zalogowany przy użyciu zaawansowanej konfiguracji logowania .

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

Gdy tester zdecyduje się kontynuować aktualizację z poziomu interfejsu aktualizacji, wywołaj funkcję updateApp() :

Kotlin+KTX

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

Java

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

Krok 4 : Zbuduj i przetestuj swoją implementację

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

Odwiedź przewodnik dotyczący rozwiązywania problemów z dystrybucją aplikacji , aby uzyskać pomoc dotyczącą typowych problemów, takich jak:

  • Tester nie otrzymuje alertów w aplikacji
  • Tester otrzymuje prośbę o wielokrotne zalogowanie się w Google