Os SDKs opcionais do Firebase App Distribution para Android e iOS permitem que você mostre alertas no app para seus testadores quando novos builds do seu app estiverem disponíveis para instalação. Neste guia, explicamos como usar os SDKs do App Distribution para Android e iOS na criação e personalização de alertas de novas versões para seus testadores.
Antes de começar
Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.
Etapa 1: ativar a API App Distribution Tester
Selecione o projeto no Console do Google Cloud.
Em API Firebase App Testers, clique em Ativar.
Etapa 2: adicionar o App Distribution ao seu app
O SDK do App Distribution para Android é composto por duas bibliotecas:
firebase-appdistribution-api
: a biblioteca somente de API, que pode ser incluída em todas as variantes de build.firebase-appdistribution
: a implementação completa do SDK (opcional).
A biblioteca somente de API permite que seu código faça chamadas para o SDK. As chamadas só terão efeito se a implementação completa do SDK for realizada.
Declare a dependência do SDK do App Distribution para Android no seu arquivo do Gradle
(nível do app) do módulo, que geralmente é <project>/<app-module>/build.gradle.kts
ou
<project>/<app-module>/build.gradle
. Para evitar
incluir a funcionalidade de atualização completa do SDK nas
versões do Google Play, adicione a dependência da biblioteca somente de API a todas as
variantes de build. Adicione apenas a implementação completa do SDK para variantes voltadas
exclusivamente para testes de pré-lançamento:
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")
}
Etapa 3: configurar alertas no app
O SDK do App Distribution para Android oferece as seguintes maneiras de configurar alertas de build no app para os testadores:
- Uma configuração básica de alerta que vem com caixas de diálogo pré-criadas de atualização e login do app para exibição aos testadores.
- Uma configuração de alerta avançada que permite personalizar a própria interface do usuário.
Caso você esteja usando o SDK do App Distribution para Android pela primeira vez, recomendamos usar a configuração básica.
Configuração básica
Use updateIfNewReleaseAvailable
para exibir uma caixa de diálogo "Ativar alertas" pré-criada para
testadores que ainda não ativaram os alertas e, em seguida, verificar se há um novo build
disponível. Quando chamado, o método gera a seguinte sequência:
Verifica se um testador ativou alertas. Caso ele não tenha feito isso, o método solicitará que faça login no App Distribution com a Conta do Google.
Verifica se há builds recém-disponibilizados para a instalação do testador.
Exibe um alerta predefinido solicitando que o testador faça a atualização.
Se o novo build for um Android App Bundle (AAB), o testador será redirecionado para o Google Play para concluir o processo de atualização.
Se o novo build for um pacote de aplicativo Android (APK), o SDK fará o download dele em segundo plano e solicitará que o testador faça a instalação quando o download for concluído. O SDK envia notificações de progresso de download ao usuário usando
NotificationManager
. Também é possível adicionar seu próprio indicador de progresso anexando um gerenciadoronProgressUpdate
à tarefaupdateIfNewReleaseAvailable
.
updateIfNewReleaseAvailable
pode ser chamado a qualquer momento no seu app. Por
exemplo, é possível chamar updateIfNewReleaseAvailable
durante o método onResume
da atividade principal do app.
O exemplo a seguir verifica se o testador ativou alertas e tem acesso a um novo build. Se essas condições forem atendidas, uma caixa de diálogo será mostrada quando o build estiver disponível para instalação:
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;
}
}
});
Configuração avançada
Configuração avançada de login
Os métodos signInTester
e isTesterSignedIn
oferecem mais flexibilidade para
personalizar a experiência de login do testador. Assim, a experiência pode ser
melhor para a aparência do app.
O exemplo a seguir verifica se o testador já fez login na
conta de testador do App Distribution. Isso permite que você opte por exibir a
interface de usuário (IU) de login apenas para testadores que ainda não fizeram login. Depois
que o testador faz login, é possível chamar updateIfNewReleaseAvailable
para
verificar se ele tem acesso a um novo build.
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.
});
}
Na IU de login, quando o testador escolher continuar, chame 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.
});
Configuração avançada de atualização
Os métodos checkForNewRelease
e updateApp
oferecem mais flexibilidade para
personalizar quando o testador é solicitado a atualizar. Você também pode personalizar a
caixa de diálogo de atualização pré-criada e o indicador de progresso de download para que eles possam
combinar com a aparência do seu app.
Observe que updateApp
não fornece indicação de progresso de download. Isso significa
que você precisa implementar sua própria indicação de progresso usando
NotificationManager
, algum tipo de exibição de status no app ou outra
abordagem.
O exemplo a seguir verifica se uma nova versão está disponível e, em seguida,
exibe uma IU personalizada. Antes de chamar checkForNewRelease
e updateApp
, verifique se
o testador fez login usando a
configuração avançada de login.
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.
});
Quando o testador escolher a IU de atualização, chame
updateApp()
:
Kotlin+KTX
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
Etapa 4: criar e testar a implementação
Crie o app e teste a implementação distribuindo a versão para os testadores usando o Console do Firebase.
Acesse o guia de solução de problemas do App Distribution para mais informações sobre questões comuns, por exemplo:
- O testador não recebe alertas no app.
- O testador precisa fazer login no Google mais de uma vez.