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 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 : ativar a API 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 SDK do Android do App Distribution 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 SDK do Android 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 de biblioteca somente de API a todas as variantes de compilação . Adicione apenas a implementação completa do SDK às 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-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'
}

Etapa 3 : configurar alertas no aplicativo

O SDK do App Distribution para Android oferece 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 entrada 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 o uso da Configuração básica .

Configuração básica

Use updateIfNewReleaseAvailable para exibir uma caixa de diálogo de alertas de habilitação 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 ativou alertas. Se o testador ainda não ativou os alertas, o método solicita que o testador faça login no App Distribution com sua conta do Google.

  2. Verifica as compilações recém-disponíveis para o testador instalar.

  3. Exibe um alerta pré-criado 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 aplicativos 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 progresso de 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 em qualquer ponto 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 uma nova compilação. 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 entrada 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 na conta de testador do App Distribution. Isso permite que você opte por exibir sua interface de usuário (IU) de login 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 IU 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 for 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 possam corresponder 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 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 continuar com a atualização da 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 : Construir e testar sua implementação

Crie seu aplicativo e teste sua implementação distribuindo a versã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