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 iOS i AndroidaApp Distribution tworzyć i dostosowywać nowe alerty o kompilacji dla testerów.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.

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 do aplikacji element App Distribution

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

  • firebase-appdistribution-api – biblioteka tylko z interfejsem 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 Twój kod. Wywołania nie będą miały żadnego efektu, jeśli nie będzie pełnej implementacji pakietu SDK.

Zadeklaruj zależność dla App Distributionpakietu 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 odmian 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-beta16")

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

Szukasz modułu biblioteki przeznaczonego specjalnie dla języka Kotlin? 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 Android SDK udostępnia te sposoby konfigurowania alertów o kompilacji w aplikacji dla testerów:

  • Podstawowa konfiguracja alertu 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 po raz pierwszy używasz App Distributionpakietu SDK Androida, 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 onProgressUpdate procedurę obsługi do updateIfNewReleaseAvailable zadania.

Funkcję updateIfNewReleaseAvailable możesz wywołać w dowolnym momencie w aplikacji. Możesz to zrobić np. 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 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 signInTesterisTesterSignedIn zapewniają większą elastyczność w dostosowywaniu sposobu logowania testerów, dzięki czemu ich wrażenia mogą 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 w interfejsie logowania tester zdecyduje się kontynuować, 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 przykładzie poniżej sprawdzamy, czy dostępna jest nowa wersja, a następnie wyświetlamy niestandardowy interfejs. Zanim wywołasz funkcje checkForNewReleaseupdateApp, upewnij się, że tester jest zalogowany przy użyciu 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 funkcję 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 wdrożenie

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 znajdziesz w App Distributionprzewodniku, np. na temat:

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