Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

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

  1. Abra o Podfile que você criou para o projeto (ou execute pod init para criar um) e adicione a seguinte linha dentro da seção de destino:

    pod 'FirebaseAppDistribution'
  2. No diretório do seu podfile, execute pod install e abra o arquivo .xcworkspace criado.

  3. Codifique seu ID do Google app ( necessário apenas para as versões 9 e 10 do iOS ):

    Codifique seu ID do Google app

    Adicione o esquema de URL appdistribution-<encoded-google-app-id> incluindo o snippet em seu Info.plist file (consulte a documentação da Apple para obter instruções sobre como adicionar o esquema de URL no Xcode):

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appdistribution-<encoded-google-app-id></string>
            </array>
        </dict>
    </array>
    

    Em seguida, codifique seu ID do Google app substituindo os dois pontos (:) por traços (-). Observe que o ID do Google app está localizado no arquivo GoogleService-Info.plist . Por exemplo, se o ID do seu aplicativo do Google for:

    7:77777777777:ios:123456789

    Seu ID do Google app codificado é:

    7-77777777777-ios-123456789
  4. Importe o módulo Firebase em sua App struct ou UIApplicationDelegate :

    Rápido

    import FirebaseCore
    

    Objetivo-C

    @import FirebaseCore;
    
  5. Configure uma instância compartilhada do FirebaseApp no ​​método application(_:didFinishLaunchingWithOptions:) do representante do seu aplicativo:

    Rápido

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objetivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. Por fim, recompile seu aplicativo.

Etapa 3 : configurar alertas no aplicativo

O SDK do App Distribution fornece duas 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 diálogos de login para exibir aos testadores, e uma configuração de alerta avançada, que permite que você personalize sua própria interface de usuário. Recomendamos primeiro usar a configuração básica de alerta se você for novo no SDK do App Distribution.

Configuração básica

Use checkForUpdate 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 solicitando que ele faça login no App Distribution com sua conta do Google.

  2. Se o testador ainda não ativou os alertas, exibe uma caixa de diálogo pré-criada.

    A ativação de alertas é um processo único no dispositivo de teste e persiste nas atualizações do seu aplicativo. Os alertas permanecem habilitados no dispositivo de teste até que o aplicativo 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 obter mais informações.

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

Você pode invocar checkForUpdate() em qualquer ponto do seu aplicativo. Por exemplo, você pode solicitar que seus testadores instalem compilações recém-disponíveis na inicialização incluindo checkForUpdate() no onAppear(perform:) da visualização raiz do seu aplicativo.

O exemplo a seguir verifica se o testador ativou ou não os alertas e tem acesso a uma nova compilação e, em caso afirmativo, exibe uma caixa de diálogo quando a compilação está disponível para instalação:

Rápido

Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  if error != nil {
      // Handle error
      return
  }

  guard let release = release else {
    return
  }

  // Customize your alerts here.
  let title = "New Version Available"
  let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
  let 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 should be a UIViewController.
  self.present(uialert, animated: true, completion: nil)
})

Objetivo-C

Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    // Handle error
    return;
  }

  if (release) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available"
message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion,
release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update"
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
      [[UIApplication sharedApplication] openURL:release.downloadURL options:@{}
completionHandler:nil];
    }];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
    [alert addAction:updateAction];
    [alert addAction:cancelAction];
    [self presentViewController:alert animated:YES completion:nil];
  }
}];

Configuração avançada

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

O exemplo a seguir verifica se o testador já fez login na conta de testador do Firebase App Distribution, para que você possa optar por exibir sua IU de login apenas para testadores que ainda não fizeram login. Depois que o testador fizer login, você poderá chame checkForUpdate() para verificar se o testador tem acesso a uma nova compilação.

Rápido

Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
// Sign in a tester without automatically checking for update
if (!AppDistribution.appDistribution().isTesterSignedIn) {
  AppDistribution.appDistribution().signInTester (completion: { error in
    // completion block for signInTester
     if (error != nil) {
       // handle failed sign in
      return
     }
    // handle successful sign in
  })
}

// Only check for update if tester is already signed in - do not prompt
if (AppDistribution.appDistribution().isTesterSignedIn) {
  AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
      // completion block for check for update
  })
}

Objetivo-C

Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
// Sign in a tester without automatically checking for update
if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {
  [[FIRAppDistribution appDistribution]
    signInTesterWithCompletion:^(NSError *_Nullable error) {
      // completion block for signInTester
     if (error) {
       // handle failed sign in
       return;
     }
      // handle successful sign in
  }];
}

// only check for update if tester is already signed in - do not prompt
if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {
  [[FIRAppDistribution appDistribution]
        checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                       NSError *_Nullable error) {
     // completion block for check for update
  }];
}

Para obter informações sobre métodos adicionais, incluindo signOutTester() , consulte a documentação de referência do App Distribution para Swift e Objective-C .

Etapa 4 : Construir e testar sua implementação

Por fim, crie seu aplicativo e teste sua implementação distribuindo a versão para 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
  • Testador sendo solicitado a fazer login no Google mais de uma vez