Powiadamianie testerów o nowych kompilacjach


Opcjonalne pakiety SDK na Firebase App DistributioniOS i Androida umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe wersje aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak za pomocą pakietów SDK na App DistributioniOS i Androida tworzyć i dostosowywać nowe alerty o kompilacji 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

Krok 2. Dodaj App Distribution do aplikacji

Pakiet SDK App Distribution na Androida 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 interfejsu API umożliwia wywoływanie pakietu SDK przez kod. Wywołania nie będą miały żadnego wpływu, jeśli nie będzie wdrożony pełny pakiet SDK.

Zadeklaruj zależność z App Distributionpakietem SDK 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ąć 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. 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-beta20")

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

Szukasz modułu biblioteki 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 (szczegółowe informacje znajdziesz w odpowiedziach na najczęstsze pytania dotyczące tej inicjatywy).

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 alertów z gotowymi oknami dialogowymi aktualizacji aplikacji i logowania, które będą wyświetlane testerom.
  • Zaawansowana konfiguracja alertów, która umożliwia dostosowanie interfejsu użytkownika.

Jeśli używasz App DistributionAndroid SDK po raz pierwszy, 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 aktualizację.

  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 onProgressUpdate procedurę obsługi do updateIfNewReleaseAvailable zadania.

Możesz wywołać funkcję updateIfNewReleaseAvailable w dowolnym momencie w aplikacji. Na przykład możesz wywołać funkcję updateIfNewReleaseAvailable w metodzie 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 dialogowe:

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 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 jest już zalogowany 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ć 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 checkForNewRelease i updateApp zapewniają większą elastyczność w dostosowywaniu 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 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ś wyświetlacza stanu w aplikacji lub innego rozwiązania.

W przykładzie poniżej sprawdzamy, czy dostępna jest 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 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ę

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

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

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