Powiadamiaj testerów o nowych kompilacjach

Opcjonalne pakiety SDK Firebase App Distribution na iOS i Androida pozwalają wyświetlać testerom alerty o nowych kompilacjach aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak używać pakietów SDK App Distribution na iOS i Androida do tworzenia i dostosowywania nowych alertów kompilacji dla testerów.

Zanim zaczniesz

Dodaj Firebase do swojego projektu Android, chyba że masz to już za sobą.

Krok 1. Włącz interfejs App Distribution Tester API

  1. Wybierz swój projekt w konsoli Google Cloud.

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

Krok 2. Dodaj Rozpowszechnianie aplikacji do swojej aplikacji

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

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

Biblioteka wyłącznie z interfejsem API umożliwia kodowi wywoływanie pakietu SDK. Bez pełnej implementacji pakietu SDK wywołania nie będą działać.

Zadeklaruj zależność z pakietem SDK App Distribution 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ąć dodawania pełnej implementacji pakietu SDK do kompilacji Play, dodaj do wszystkich wariantów kompilacji zależność biblioteki Tylko API. 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-beta13")

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

Szukasz modułu biblioteki korzystającego z usługi Kotlin? Od wersji z października 2023 r. zarówno deweloperzy aplikacji Kotlin, jak i języki Java mogą korzystać z modułu głównej biblioteki (szczegółowe informacje znajdziesz w odpowiedziach na najczęstsze pytania na temat tej inicjatywy).

Krok 3. Skonfiguruj alerty w aplikacji

Pakiet Android SDK App Distribution pozwala skonfigurować dla testerów alerty dotyczące kompilacji w aplikacji na te sposoby:

  • Podstawowa konfiguracja alertów z gotowymi oknami logowania i aktualizacjami aplikacji, które wyświetlają się testerom.
  • Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.

Jeśli używasz pakietu SDK App Distribution na Androida po raz pierwszy, zalecamy użycie konfiguracji podstawowej.

Podstawowa konfiguracja

Użyj updateIfNewReleaseAvailable, aby wyświetlić gotowe okno włączania alertów dla testerów, którzy nie włączyli jeszcze alertów. Gdy to zrobisz, sprawdź, czy jest dostępna nowa kompilacja. Po wywołaniu metoda wywołuje tę sekwencję:

  1. Sprawdza, czy tester włączył alerty. Jeśli tester nie włączył jeszcze alertów, metoda poprosi go o zalogowanie się w usłudze Rozpowszechnianie aplikacji przy użyciu konta Google.

  2. Sprawdza, czy są dostępne nowe kompilacje, które może zainstalować tester.

  3. Wyświetla gotowy alert z prośbą o aktualizację.

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

    Jeśli nową kompilacją jest pakiet APK aplikacji na Androida, pakiet SDK pobierze ją w tle i poprosi testera o jej zainstalowanie po zakończeniu pobierania. Pakiet SDK wysyła do użytkownika powiadomienia o postępach pobierania za pomocą interfejsu NotificationManager. Możesz też dodać własny wskaźnik postępu, dołączając moduł obsługi onProgressUpdate do zadania updateIfNewReleaseAvailable.

Możesz wywołać funkcję updateIfNewReleaseAvailable w dowolnym momencie w aplikacji. Możesz na przykład wywołać funkcję updateIfNewReleaseAvailable podczas głównej aktywności aplikacji onResume.

Poniższy przykład pokazuje, czy tester włączył alerty i ma dostęp do nowej kompilacji. Jeśli te warunki zostaną spełnione, pojawi się okno, 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;
        }
      }
    });

Konfiguracja zaawansowana

Zaawansowana konfiguracja logowania

Metody signInTester i isTesterSignedIn dają Ci większą elastyczność w zakresie dostosowywania sposobu logowania się testera, tak by można było lepiej dopasować go do wyglądu i stylu Twojej aplikacji.

Poniższy przykład pokazuje, czy tester zalogował się już na konto testera usługi Rozpowszechniania aplikacji. Dzięki temu możesz wyświetlać interfejs logowania tylko tym testerom, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz wywołać updateIfNewReleaseAvailable, aby sprawdzić, czy ma on 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.
    });
}

Gdy tester zdecyduje się kontynuować, zadzwoń pod numer signInTester() w interfejsie logowania:

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 dają więcej możliwości dostosowywania, kiedy 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 i stylu aplikacji.

Pamiętaj, że updateApp nie podaje postępu pobierania. Oznacza to, że musisz wdrożyć własne wskaźniki postępu za pomocą NotificationManager, jakiegoś sposobu wyświetlania stanu w aplikacji lub innej metody.

Poniższy przykład pokazuje, czy jest dostępna nowa wersja, a następnie wyświetla niestandardowy interfejs. Przed wywołaniem funkcji checkForNewRelease i updateApp sprawdź, czy tester jest zalogowany, korzystając z konfiguracji logowania zaawansowanego.

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 poziomu interfejsu aktualizacji, wywołaj 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. Utwórz i przetestuj implementację

Utwórz aplikację i przetestuj jej implementację, przekazując kompilację testerom za pomocą konsoli Firebase.

Zapoznaj się z przewodnikiem po rozwiązywaniu problemów z rozpowszechnianiem aplikacji, aby uzyskać pomoc dotyczącą typowych problemów, takich jak:

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