Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Notificar testadores sobre novas compilações

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Os SDKs opcionais do Firebase App Distribution para iOS e Android permitem que você exiba alertas no aplicativo para seus testadores quando novos builds do seu aplicativo estiverem disponíveis para instalação. Este guia explica como usar os SDKs iOS e Android do App Distribution para criar e personalizar novos alertas de compilação para seus testadores.

Antes de você começar

Se ainda não o fez, adicione o Firebase ao seu projeto Android .

Etapa 1 : habilitar a API do App Distribution Tester

  1. Selecione seu projeto no Console do Google Cloud .

  2. Em Firebase App Testers API, clique em Ativar .

Etapa 2 : adicionar o App Distribution ao seu aplicativo

O App Distribution Android SDK consiste em duas bibliotecas:

  • firebase-appdistribution-api - A biblioteca somente de API, que você pode incluir em todas as variantes de compilação .
  • 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 não terão efeito se a implementação completa do SDK não estiver presente.

Declare a dependência para o Android SDK do App Distribution no arquivo Gradle do módulo (nível do aplicativo) (geralmente app/build.gradle ). Para evitar incluir a funcionalidade de autoatualização da implementação completa do SDK em suas compilações do Google Play, adicione a dependência da biblioteca somente de API a todas as variantes de compilação . Adicione a implementação completa do SDK apenas a variantes destinadas exclusivamente a testes de pré-lançamento:

Java

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

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

Kotlin+KTX

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

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

Etapa 3 : configurar alertas no aplicativo

O App Distribution Android SDK fornece as seguintes maneiras de configurar alertas de compilação no aplicativo para seus testadores:

  • Uma configuração de alerta básica que vem com atualização de aplicativo pré-criada e caixas de diálogo de login para exibir aos testadores.
  • Uma configuração de alerta avançada que permite personalizar sua própria interface de usuário.

Se você estiver usando o Android SDK do App Distribution pela primeira vez, recomendamos usar a configuração básica .

Configuração básica

Use updateIfNewReleaseAvailable para exibir uma caixa de diálogo de habilitação de alertas pré-criada para testadores que ainda não habilitaram alertas e, em seguida, verifique se uma nova compilação está disponível. Quando chamado, o método executa a seguinte sequência:

  1. Verifica se um testador habilitou alertas. Se o testador ainda não tiver ativado os alertas, o método solicitará que o testador faça login no App Distribution com sua conta do Google.

  2. Verifica se há novas compilações disponíveis para o testador instalar.

  3. Exibe um alerta pré-criado solicitando que o testador atualize.

  4. Se a nova compilação for um Android App Bundle (AAB), redireciona o testador para o Google Play para concluir o processo de atualização.

    Se a nova compilação for um pacote de aplicativo Android (APK), o SDK fará o download da nova compilação em segundo plano e solicitará que o testador instale quando o download for concluído. O SDK envia notificações de andamento do download para o usuário usando NotificationManager . Você também pode adicionar seu próprio indicador de progresso anexando um manipulador onProgressUpdate à tarefa updateIfNewReleaseAvailable .

Você pode chamar updateIfNewReleaseAvailable a qualquer momento em seu aplicativo. Por exemplo, você pode chamar updateIfNewReleaseAvailable durante o método onResume da atividade principal do aplicativo.

O exemplo a seguir verifica se o testador habilitou alertas e tem acesso a um novo build. Se essas condições forem atendidas, uma caixa de diálogo será exibida quando a compilação estiver disponível para instalação:

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

Configuração avançada

Configuração de login avançada

Os métodos signInTester e isTesterSignedIn oferecem mais flexibilidade para personalizar a experiência de login do testador, para que a experiência do testador possa corresponder melhor à aparência do seu aplicativo.

O exemplo a seguir verifica se o testador já fez login em sua conta de testador do App Distribution. Isso permite que você escolha exibir sua interface de usuário (IU) de entrada apenas para testadores que ainda não fizeram login. Depois que o testador entrar, você poderá chamar updateIfNewReleaseAvailable para verificar se o testador tem acesso a uma nova compilação.

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

Na interface do usuário de login, quando o testador optar por continuar, chame 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.
});

Configuração de atualização avançada

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 baixar o indicador de progresso para que eles possam corresponder melhor à aparência do seu aplicativo.

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 aplicativo ou alguma outra abordagem.

O exemplo a seguir verifica se uma nova versão está disponível e exibe uma interface do usuário personalizada. Antes de chamar checkForNewRelease e updateApp , verifique se o testador está conectado usando a configuração de entrada avançada .

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

Quando o testador optar por prosseguir com a atualização de sua IU de atualização, chame updateApp() :

Java

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

Kotlin+KTX

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

Etapa 4 : crie e teste sua implementação

Crie seu aplicativo e teste sua implementação distribuindo a compilação para testadores usando o Firebase console.

Visite o guia de solução de problemas de distribuição de aplicativos para obter ajuda com problemas comuns, como:

  • O testador não recebe alertas no aplicativo
  • Testador sendo solicitado a fazer login no Google mais de uma vez