Alertar os testadores sobre as novas versões do seu app com o SDK do Firebase App Distribution para iOS – Codelab

1. Visão geral

Este é o codelab "Como integrar o SDK do Firebase App Distribution no seu app iOS". Neste codelab, você vai adicionar o SDK do App Distribution ao seu app para mostrar alertas aos testadores quando novos builds estiverem disponíveis para download. Você vai aprender a usar uma configuração básica e uma personalizada para que os testadores façam login e recebam atualizações. Depois, você enviará uma nova versão para o App Distribution e acionará um novo alerta de build diretamente no app.

Conteúdo

  • Como usar o App Distribution para distribuir um app de pré-lançamento aos testadores em tempo real
  • Como integrar o SDK do App Distribution para iOS ao seu app
  • Como alertar um testador quando há um novo build de pré-lançamento pronto para instalação
  • Como personalizar o SDK para atender às suas necessidades únicas de teste

Pré-requisitos

  • Xcode 12 (ou versão mais recente)
  • CocoaPods 1.9.1 (ou mais recente)
  • Uma conta de desenvolvedor da Apple para distribuição ad hoc.
  • Um dispositivo iOS físico para testes. O app simulador para iOS vai funcionar na maior parte do codelab, mas os simuladores não podem fazer o download de versões.

Como você vai usar este tutorial?

Apenas leitura Ler e fazer os exercícios

Como você classificaria sua experiência com a criação de apps iOS?

Iniciante Intermediário Proficiente

2. Criar projeto do Console do Firebase

Adicionar novo projeto do Firebase

  1. Faça login no Firebase.
  2. No Console do Firebase, clique em "Adicionar projeto" e nomeie seu projeto como "Codelab do Firebase".

Você não precisa ativar o Google Analytics neste projeto.

  1. Clique em Criar projeto.

Adicionar app ao Firebase

Siga a documentação para registrar seu app no Firebase. Use "com.google.firebase.codelab.AppDistribution.<your_name>" como o ID do pacote do iOS.

Quando solicitado, faça o download do arquivo GoogleService-Info.plist do projeto. Você vai precisar dele mais tarde.

3. Acesse o projeto de amostra

Faça o download do código

Comece clonando o projeto de amostra.

git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git

Se o git não estiver instalado, faça o download do projeto de exemplo na página do GitHub ou clique neste link.

Fazer o download das dependências e abrir o projeto no Xcode

  1. Abra o Podfile no mesmo diretório
cd firebase-appdistribution-ios/start
Open Podfile
  1. Adicione a seguinte linha ao seu podfile:

Podfile

pod 'Firebase/AppDistribution'

Execute pod update no diretório do projeto e abra o projeto no Xcode.

pod install --repo-update
xed .

Atualizar o identificador do pacote para corresponder ao seu app do Firebase

No menu à esquerda, clique duas vezes em AppDistributionExample. Em seguida, localize a guia Geral e altere o identificador do pacote para que corresponda ao identificador do seu app do Firebase, que pode ser encontrado nas configurações do projeto. Precisa ser "com.google.firebase.codelab.AppDistribution.<seu_nome>"

Adicionar o Firebase ao app

Localize o arquivo GoogleService-Info.plist que você salvou no seu sistema de arquivos e arraste-o para a raiz do projeto Xcode. Você também pode fazer o download do arquivo a qualquer momento na página de configurações do seu projeto.

3cf9290805e7fdab.png

No arquivo AppDistributionExample/AppDelegate.swift, importe o Firebase na parte superior do arquivo.

AppDistributeExample/AppDelegate.swift.

import Firebase

No método didFinishLaunchingWithOptions, adicione uma chamada para configurar o Firebase.

AppDistributeExample/AppDelegate.swift.

FirebaseApp.configure()

4. Configurar novos alertas de build no app com o SDK do App Distribution

Nesta etapa, você vai adicionar o SDK do Firebase App Distribution ao seu app e mostrar alertas aos testadores quando novos builds estiverem disponíveis para instalação. Para fazer isso, ative a API Firebase App Testers para seu projeto "Firebase Codelab" (no console do Google Cloud). Você precisará fazer login com a mesma conta e selecionar o projeto correto no menu suspenso na parte superior.

Configurar alertas no app

O SDK do App Distribution oferece duas maneiras de configurar alertas de build no app para seus testadores: uma configuração básica de alerta, que vem com uma caixa de diálogo de login predefinida para exibição aos testadores, e uma configuração de alerta avançada, que permite personalizar sua própria interface do usuário (interface).

Começaremos com a configuração básica de alertas. Use checkForUpdate para mostrar uma caixa de diálogo pré-criada de ativação de alertas para testadores que ainda não ativaram os alertas e, em seguida, conferir se um novo build está disponível. Para ativar os alertas, os testadores fazem login em uma conta com acesso ao app no App Distribution. Quando chamado, o método gera a seguinte sequência:

  1. Verifica se um testador ativou alertas. Caso contrário, aparece uma caixa de diálogo pré-criada que solicita que os usuários façam login no App Distribution com a Conta do Google.

A ativação de alertas é um processo único no dispositivo de teste e persiste entre as atualizações do app. Os alertas permanecem ativados no dispositivo de teste até que o app seja desinstalado ou até que o método signOutTester seja chamado. Consulte a documentação de referência do método ( Swift ou Objective-C) para mais informações.

  1. Verifica se há builds recém-disponibilizados para a instalação do testador. Retorna um objeto release ou um erro.

Você pode incluir checkForUpdate a qualquer momento no app. Por exemplo, é possível solicitar que os testadores instalem builds recém-disponibilizados na inicialização incluindo checkForUpdate no view Authenticate do UIViewController.

No arquivo AppDistributionViewController.swift, importe o Firebase na parte superior do arquivo.

AppDistributionViewController.swift (em inglês)

import Firebase

Abra AppDistribuiçãoExample/AppDistributionViewController.swift e copie as linhas no método viewDidAppear desta forma:

AppDistributionViewController.swift (em inglês)

 override func viewDidAppear(_ animated: Bool) {
    checkForUpdate()
 }

Agora, vamos implementar o método checkForUpdate().

AppDistributionViewController.swift (em inglês)

  private func checkForUpdate() {
    AppDistribution.appDistribution().checkForUpdate(completion: { [self] release, error in
      var uiAlert: UIAlertController

      if error != nil {
        uiAlert = UIAlertController(title: "Error", message: "Error Checking for update! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
      } else if release == nil {
        uiAlert = UIAlertController(title: "Check for Update", message: "No releases found!!", preferredStyle: .alert)
        uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default))
      } else {
        guard let release = release else { return }

        let title = "New Version Available"
        let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
        uiAlert = UIAlertController(title: title, message: message, preferredStyle: .alert)

        uiAlert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {
          _ in
          UIApplication.shared.open(release.downloadURL)
        })
        uiAlert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {
          _ in
        })
      }
      self.present(uiAlert, animated: true, completion: nil)
    })
  }

5. Criar e convidar testadores para fazer o download do app

Nesta etapa, você vai criar o app e testar a implementação distribuindo o build para testadores usando o Console do Firebase.

Criar seu app

Quando estiver tudo pronto para distribuir uma versão de pré-lançamento do seu app para os testadores, selecione "Qualquer dispositivo iOS (arm64)" como destino de build e Produto->Arquivo. Depois que o arquivo for criado, crie uma distribuição assinada com o perfil de distribuição de desenvolvimento.

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

Quando o build é concluído, ele salva um arquivo IPA e alguns arquivos de registro na pasta especificada. Você distribui o arquivo IPA para os testadores nas etapas a seguir.

Se você tiver problemas na criação do seu app, consulte os documentos de assinatura de código da Apple para conferir as etapas de solução de problemas.

Distribuir seu app para os testadores

Para distribuir seu aplicativo para os testadores, faça o upload do arquivo IPA usando o Console do Firebase:

  1. Abra a página "App Distribution" do Console do Firebase. Selecione seu projeto do Firebase quando solicitado.
  2. Pressione Começar.

e4671bd304ecfe47.png

  1. Na página "Versões", selecione o app que você quer distribuir no menu suspenso.

8a3da2939b9746f4.png

  1. Arraste o arquivo IPA do seu aplicativo ao console para fazer o upload.
  2. Quando o upload for concluído, especifique os grupos de testadores e os testadores individuais que devem receber o build. (Adicione seu e-mail para receber o convite.) Em seguida, adicione notas ao build. Consulte Gerenciar testadores para saber como criar grupos de testadores.

de63e3c3c64f909e.png

  1. Clique em "Distribuir" para disponibilizar o build para os testadores.

b6e75dc216fc3731.png

Adicionar seu perfil como testador da versão

No Console do Firebase, agora é possível ver os testadores adicionados à versão do app.

eb61c6be96ff3a11.png

Como você incluiu seu endereço de e-mail, receberá um e-mail do Firebase App Distribution com um convite para testar o aplicativo. Agora você é o primeiro testador. Continue na seção abaixo para configurar como testador no dispositivo de teste.

Registrar o dispositivo de teste

Primeiro, é necessário registrar seu dispositivo de teste para fazer o download e testar uma versão ad hoc.

  1. No dispositivo de teste iOS, abra o e-mail enviado pelo Firebase App Distribution e toque no link "Começar". Abra o link no Safari.
  2. No app da Web do testador do Firebase App Distribution que é exibido, faça login com sua Conta do Google e toque em Aceitar convite.

4d1af345ef944620.png

Agora, você vai encontrar a versão para a qual recebeu um convite.

  1. Toque em Registrar dispositivo para compartilhar seu UDID com o Firebase e atualizar o perfil de provisionamento do app mais tarde.

fd141215e54a938d.png

  1. Siga as instruções e acesse as configurações para fazer o download do perfil e compartilhar seu UDID.

Quando você voltar para o App Distribution, a versão estará marcada como "Dispositivo registrado":

fe93d649dfa25877.png

O UDID do testador foi compartilhado com o desenvolvedor. Agora cabe ao desenvolvedor criar para o testador uma nova versão do aplicativo.

Confira as informações do testador no console

De volta à visualização do desenvolvedor no Console do Firebase, o testador aparecerá como "Aceito" na versão:

1bef6f182c1c58f9.png

Você também vai receber um e-mail como desenvolvedor se o dispositivo usado ainda não estiver incluído no perfil de provisionamento. Você receberá uma notificação sobre o novo UDID que precisa adicionar. Também é possível exportar todos os UDIDs como um arquivo de texto.

  1. Para exportar todos os UDIDs, abra a guia "Testadores e grupos".

2745d49a6abc47fe.png

  1. Clique em "Exportar UDIDs da Apple".

cb45477f8cc436ba.png

Esse arquivo precisa conter o UDID do dispositivo de teste.

Device ID            Device Name                            Device Platform
1234567890     tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen        ios

Quando você receber um desses e-mails, atualize seu perfil de provisionamento com o UDID e distribua um novo build para seus testadores seguindo estas etapas:

  1. Adicione os dispositivos ao seu portal para desenvolvedores da Apple.
  • Opção 1: importe os UDIDs dos dispositivos como um arquivo CSV. Na guia "Testadores e grupos" do painel do App Distribution, selecione "Todos os testadores" e clique em "Exportar UDIDs da Apple" para fazer o download de um arquivo CSV. Em seguida, importe o arquivo para sua conta de desenvolvedor da Apple usando a opção "Registrar vários dispositivos". Consulte a documentação da Apple para saber mais. Sua conta de desenvolvedor da Apple pode permitir apenas a importação de um número limitado de dispositivos por ano.
  • Opção 2: colete e insira os UDIDs por e-mail. Na página Adicionar dispositivos do portal para desenvolvedores da Apple, registre o novo UDID especificado no e-mail que você recebeu.

ffb74294e68ee1c8.png

  1. Adicione os dispositivos registrados ao seu perfil de provisionamento.
  2. Faça o download do perfil de provisionamento e use-o para recriar o app. Se você estiver recriando apenas para atualizar os dispositivos registrados, não atualize o número ou a versão do build.
  3. Redistribua seu app no Console do Firebase ou na CLI. Se você já tiver distribuído um build com o mesmo número e versão, somente os usuários de dispositivos recém-registrados receberão e-mails de notificação.

Fazer o download da versão no dispositivo de teste

Agora, a versão tem o UDID do dispositivo de teste para que ele possa fazer o download e instalar o app. O App Distribution envia um e-mail aos testadores quando o UDID é adicionado a uma nova versão.

a4049260bae2850b.png

  1. No dispositivo de teste, volte ao app da Web para testadores do App Distribution usando o link enviado por e-mail ou o ícone na tela inicial do dispositivo.

Ao navegar até o app do codelab da UDID, você verá que a versão está pronta para download.

dad6d03b6ad78746.png

  1. Se você estiver em um dispositivo físico, pressione "Download" e instale e execute o app.
  2. Quando o app for iniciado, ele vai pedir que você ative novos alertas de build. Selecione "Ativar".

6e3540a2900734e6.png

  1. Em seguida, ele vai solicitar que você faça login. Clique em "Continuar.

82d90d7935bfaea0.png

  1. Faça login com sua conta de testador.

13bee1d03fa94ebf.png

  1. Você vai voltar ao app. Não será necessário fazer login nem aceitar alertas na próxima vez que executar o app.

815d6757eb5f6327.png

Distribuir uma atualização para seus testadores

  1. Atualize o número da versão para "2".

861aa63ebbc6ec54.png

  1. Selecione "Qualquer dispositivo iOS (arm64)" como destino da versão e depois Produto->Arquivo. Depois que o arquivo for gerado, crie uma distribuição assinada com o perfil de distribuição de desenvolvimento.
  2. Quando o build é concluído, ele salva um arquivo IPA e alguns arquivos de registro na pasta especificada. Faça upload desse novo IPA no Console do Firebase, adicione seu e-mail como testador novamente e distribua.

b6e75dc216fc3731.png

Testar alertas de build

  1. Confira se você fechou o app aberto. Reinicie o app.
  2. Quando o app for reiniciado, você vai receber o alerta "Nova versão disponível".

3bd532992df458e6.png

  1. Clique em "Atualizar" para receber a versão mais recente.
  2. Clique em "Instalar" na tela seguinte.

3a761d8fa4b79d33.png

  1. Parabéns! Você conseguiu atualizar o app com os alertas integrados.

6. Personalizar o login do testador

Com os métodos signInTester/signOutTester e isTesterSignedIn, você tem mais flexibilidade para personalizar a experiência de login do testador para que possa combinar melhor a aparência do app.

O exemplo a seguir verifica se o testador já fez login na conta de testador do Firebase App Distribution. Assim, você pode exibir a interface de login apenas para os testadores que ainda não fizeram login. Depois que o testador fizer login, você poderá chamar checkForUpdate para verificar se ele tem acesso a um novo build.

Desativaremos a verificação de atualizações automaticamente em viewdidAppea comentando a chamada checkForUpdate().

AppDistributionViewController.swift (em inglês)

 override func viewDidAppear(_ animated: Bool) {
    // checkForUpdate()
 }

Em vez disso, vamos chamar checkForUpdate() em checkForUpdateButtonClicked().

 @objc func checkForUpdateButtonClicked() {
    checkForUpdate()
 }

Agora, vamos implementar o método signInOutButtonClicked(), que vai conectar o usuário se ele estiver desconectado ou desconectar o usuário se ele já estiver conectado.

AppDistributionViewController.swift (em inglês)

 @objc func signInOutButtonClicked() {
    if isTesterSignedIn() {
      AppDistribution.appDistribution().signOutTester()

      self.configureCheckForUpdateButton()
      self.configureSignInSignOutButton()
      self.configureSignInStatus()

    } else {
      AppDistribution.appDistribution().signInTester(completion: { error in
        if error == nil {
          self.configureCheckForUpdateButton()
          self.configureSignInSignOutButton()
          self.configureSignInStatus()
        } else {
          let uiAlert = UIAlertController(title: "Custom:Error", message: "Error during tester sign in! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
          uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default) {
            _ in
          })

          self.present(uiAlert, animated: true, completion: nil)
        }
      })
    }
  }

Por fim, vamos implementar o método isTesterSignedI.

AppDistributionViewController.swift (em inglês)

 private func isTesterSignedIn() -> Bool {
    return AppDistribution.appDistribution().isTesterSignedIn
 }

Criar e testar a implementação

7. Parabéns!

Você criou o recurso de exibição de alertas no app usando o SDK do Firebase App Distribution para iOS.

O que aprendemos

  • Firebase App Distribution
  • SDK de novos alertas do Firebase App Distribution para iOS

Próximas etapas

Saiba mais

Perguntas?

Informar problemas