Notificar testadores sobre novas compilações

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

Antes de você começar

Adicione o Firebase ao seu projeto Android , caso ainda não o tenha feito.

Etapa 1 : ativar a API App Distribution Tester

  1. Selecione seu projeto no console do Google Cloud .

  2. Em API Firebase App Testers, 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 API, que você pode incluir em todas as variantes de compilação .
  • firebase-appdistribution – A implementação completa do SDK (opcional).

A biblioteca somente 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 do SDK do Android do App Distribution no arquivo Gradle do módulo (nível do aplicativo) (geralmente <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle ). Para evitar a inclusão da funcionalidade de autoatualização completa da implementação do SDK nas versões do Play, adicione a dependência da biblioteca somente API a todas as variantes de versão . Adicione a implementação completa do SDK apenas a variantes destinadas exclusivamente a testes de pré-lançamento.

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta12")

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

Procurando um módulo de biblioteca específico para Kotlin? A partir da versão de outubro de 2023 , tanto os desenvolvedores Kotlin quanto os Java podem depender do módulo da biblioteca principal (para obter detalhes, consulte o FAQ sobre esta iniciativa ).

Etapa 3 : configurar alertas no aplicativo

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

  • Uma configuração básica de alerta 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 SDK do Android 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 ativação de alertas pré-construída para testadores que ainda não ativaram 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 ativou 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á compilações recentemente disponíveis para o testador instalar.

  3. Exibe um alerta predefinido solicitando que o testador atualize.

  4. Se a nova versã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á 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 progresso do download ao 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 do 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 ativou 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:

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 de login avançada

Os métodos signInTester e isTesterSignedIn oferecem mais flexibilidade para personalizar a experiência de login do seu 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ê opte por exibir sua interface do usuário (IU) de login apenas para testadores que ainda não fizeram login. Depois que o testador fizer login, você poderá chamar updateIfNewReleaseAvailable para verificar se o testador 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 decidir 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 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 predefinida e o indicador de progresso do download para que correspondam melhor à aparência do seu aplicativo.

Observe que updateApp não fornece indicação de progresso do 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 UI personalizada. Antes de chamar checkForNewRelease e updateApp , certifique-se de que o testador esteja conectado usando a configuração de login avançada .

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 optar por prosseguir com a atualização na interface 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 : crie e teste sua implementação

Crie seu aplicativo e teste sua implementação distribuindo-o aos testadores usando o console do Firebase.

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
  • O testador é solicitado a fazer login no Google mais de uma vez