Powiadamiaj testerów o nowych kompilacjach

Opcjonalne pakiety SDK Firebase App Distribution dla systemów iOS i Android umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe wersje aplikacji do zainstalowania. W tym przewodniku wyjaśniono, jak używać zestawów SDK App Distribution dla systemów iOS i Android do tworzenia i dostosowywania nowych alertów kompilacji 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 Google Cloud Console .

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

Krok 2 : Dodaj dystrybucję aplikacji do swojej aplikacji

Pakiet SDK dystrybucji aplikacji na Androida składa się z dwóch bibliotek:

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

Biblioteka obsługująca tylko interfejs 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 zestawu SDK.

Zadeklaruj zależność dla pakietu App Distribution Android SDK w swoim module (na poziomie aplikacji) pliku Gradle (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle ). Aby uniknąć włączania pełnej funkcjonalności samoaktualizacji pakietu SDK do swoich kompilacji Play, dodaj zależność biblioteki tylko do interfejsu API do wszystkich wersji kompilacji . Dodawaj pełną implementację pakietu SDK tylko do wariantów przeznaczonych wyłącznie do testów przedpremierowych:

Kotlin+KTX

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

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

Java

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

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

Krok 3 : Skonfiguruj alerty w aplikacji

Pakiet App Distribution Android SDK udostępnia następujące sposoby konfigurowania alertów tworzenia w aplikacji dla testerów:

  • Podstawowa konfiguracja alertów, która jest dostarczana ze wstępnie skompilowaną aktualizacją aplikacji i oknami dialogowymi logowania, które są wyświetlane testerom.
  • Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.

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

Podstawowa konfiguracja

Użyj updateIfNewReleaseAvailable , aby wyświetlić gotowe 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 wykonuje następującą sekwencję:

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

  2. Sprawdza nowe dostępne kompilacje do zainstalowania przez testera.

  3. Wyświetla wbudowany alert z monitem testera o aktualizację.

  4. Jeśli nowa kompilacja to pakiet Android App Bundle (AAB), przekierowuje testera do Google Play, aby dokończyć proces aktualizacji.

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

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

Poniższy przykład sprawdza, czy tester włączył alerty i ma dostęp do nowej kompilacji. Jeśli te warunki są spełnione, zostanie wyświetlone 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

Metody signInTester i isTesterSignedIn zapewniają większą elastyczność w dostosowywaniu środowiska logowania testera, dzięki czemu środowisko testera może lepiej pasować do wyglądu i działania Twojej aplikacji.

Poniższy przykład sprawdza, czy tester zalogował się już na swoim koncie testera dystrybucji aplikacji. Dzięki temu możesz wybrać wyświetlanie interfejsu użytkownika logowania (UI) 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.
    });
}

W interfejsie logowania, gdy tester zdecyduje się kontynuować, 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 jest proszony 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 działania Twojej aplikacji.

Pamiętaj, że updateApp nie zapewnia 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 interfejsu użytkownika 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ę, dystrybuując kompilację do testerów za pomocą konsoli Firebase.

Odwiedź przewodnik 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 jest proszony o zalogowanie się w Google więcej niż jeden raz