Powiadamianie testerów o nowych kompilacjach


Opcjonalne pakiety Firebase App DistributionSDK na iOS i AndroidaApp Distribution umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe wersje aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak używać App Distributionpakietów SDK na iOS i AndroidaApp Distribution do tworzenia i dostosowywania alertów o nowych wersjach 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 Google Cloudkonsoli.

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

Krok 2. Dodaj App Distribution do aplikacji

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

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

Biblioteka tylko z interfejsem API umożliwia kodowi wywoływanie pakietu SDK. Wywołania nie będą miały żadnego wpływu, jeśli nie będzie obecna pełna implementacja pakietu SDK.

Zadeklaruj zależność z App Distributionpakietem SDK na Androida<project>/<app-module>/build.gradle.ktspliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle). Aby uniknąć uwzględniania w kompilacjach Play funkcji automatycznej aktualizacji pełnej implementacji pakietu SDK, dodaj zależność biblioteki tylko z interfejsem API do wszystkich wariantów kompilacji. Dodaj pełną implementację pakietu SDK 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-beta19")

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

Szukasz modułu biblioteki przeznaczonego specjalnie dla języka Kotlin? Począwszy od października 2023 r. deweloperzy korzystający z języków Kotlin i Java mogą używać głównego modułu biblioteki (więcej informacji znajdziesz w tym artykule).

Krok 3. Skonfiguruj alerty w aplikacji

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

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

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

Podstawowa konfiguracja

Użyj updateIfNewReleaseAvailable, aby wyświetlić testerom, którzy nie włączyli jeszcze alertów, gotowe okno dialogowe włączania alertów, a następnie sprawdź, czy dostępna jest nowa wersja. 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 App Distribution za pomocą konta Google.

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

  3. Wyświetla gotowy alert z prośbą o zaktualizowanie aplikacji.

  4. Jeśli nowa kompilacja jest pakietem aplikacji na Androida (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 wyświetla testerowi prośbę o zainstalowanie. Pakiet SDK wysyła do użytkownika powiadomienia o postępach pobierania za pomocą NotificationManager. Możesz też dodać własny wskaźnik postępu, dołączając procedurę obsługi onProgressUpdate do updateIfNewReleaseAvailable zadania.

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

W tym przykładzie sprawdzamy, czy tester włączył alerty i ma dostęp do nowej wersji. 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 sposobu logowania testera, dzięki czemu może on lepiej pasować do wyglądu i stylu aplikacji.

W tym przykładzie sprawdzamy, czy tester zalogował się już na swoje App Distributionkonto testera. 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ć funkcję updateIfNewReleaseAvailable, aby sprawdzić, czy ma 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, w którym tester jest proszony o aktualizację. Możesz też dostosować gotowe okno dialogowe aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do wyglądu Twojej aplikacji.

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

W tym przykładzie sprawdzamy, czy dostępna jest nowa wersja, a następnie wyświetlamy niestandardowy interfejs. Przed wywołaniem funkcji checkForNewReleaseupdateApp 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 kontynuowanie aktualizacji 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. Skompiluj i przetestuj implementację

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

Więcej informacji o rozwiązywaniu typowych problemów, takich jak:App Distribution

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