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 nowe kompilacje aplikacji będą dostępne do zainstalowania. 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 Google Cloud Console .

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

Krok 2 : Dodaj dystrybucję aplikacji do swojej aplikacji

Pakiet App Distribution Android SDK 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ń zestawu SDK. Wywołania nie przyniosą efektu, jeśli nie będzie pełnej implementacji SDK.

Zadeklaruj zależność dla zestawu SDK dystrybucji aplikacji dla systemu Android w pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle ). Aby uniknąć uwzględniania funkcji samoaktualizacji pełnej implementacji SDK w kompilacjach Play, dodaj do wszystkich wariantów kompilacji zależność tylko od biblioteki API . Dodawaj pełną implementację SDK tylko do wariantów, które są przeznaczone wyłącznie do testowania przed wydaniem:

Java

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta03'

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

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta03'

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

Krok 3 : Skonfiguruj alerty w aplikacji

Pakiet App Distribution Android SDK zapewnia następujące sposoby konfigurowania alertów kompilacji w aplikacji dla testerów:

  • Podstawowa konfiguracja alertów, która jest dostarczana ze wstępnie zbudowaną 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 po raz pierwszy używasz zestawu SDK do dystrybucji aplikacji na Androida, zalecamy skorzystanie z konfiguracji podstawowej .

Konfiguracja podstawowa

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 sprawdzić, 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 prosi testera o zalogowanie się do App Distribution za pomocą swojego konta Google.

  2. Sprawdza dostępność nowych kompilacji do zainstalowania przez testera.

  3. Wyświetla wbudowany alert, który zachęca testera do aktualizacji.

  4. Jeśli nowa kompilacja to pakiet aplikacji na Androida (AAB), przekierowuje testera do Google Play, aby dokończyć proces 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. Zestaw SDK wysyła powiadomienia o postępie pobierania do użytkownika za pomocą NotificationManager . Możesz również dodać własny wskaźnik postępu, dołączając procedurę obsługi updateIfNewReleaseAvailable onProgressUpdate

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:

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

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

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 aplikacji.

Poniższy przykład sprawdza, czy tester zalogował się już na swoje konto 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ć updateIfNewReleaseAvailable , aby sprawdzić, czy tester ma dostęp do nowej kompilacji.

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

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

W interfejsie logowania, gdy tester zdecyduje się kontynuować, wywołaj signInTester() :

Java

firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
  // Handle successful sign-in.
}).addOnFailureListener(e -> {
  // Handle failed sign-in.
});

Kotlin+KTX

firebaseAppDistribution.signInTester().addOnSuccessListener {
  // Handle successful sign-in.
}.addOnFailureListener {
  // Handle failed sign-in.
});

Zaawansowana konfiguracja aktualizacji

Metody checkForNewRelease i updateApp zapewniają większą elastyczność w dostosowywaniu, gdy tester jest proszony o aktualizację. Możesz także dostosować wbudowane okno dialogowe aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do ​​wyglądu i działania Twojej aplikacji.

Należy pamiętać, że updateApp nie dostarcza 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 nowa wersja jest dostępna, 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 .

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

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

Gdy tester zdecyduje się kontynuować aktualizację z interfejsu użytkownika aktualizacji, wywołaj updateApp() :

Java

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

Kotlin+KTX

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

Krok 4 : Zbuduj i przetestuj swoją implementację

Stwórz swoją aplikację i przetestuj implementację, udostępniając kompilację testerom 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ę do Google więcej niż jeden raz