Os SDKs opcionais do iOS e Android do Firebase App Distribution permitem que você mostre alertas no app para os testadores quando novos builds do app estiverem disponíveis para instalação. Neste guia, explicamos como usar os SDKs do iOS e Android do App Distribution na criação e personalização de alertas de novos builds para os testadores.
Antes de começar
Adicione o Firebase ao seu projeto do iOS, caso ainda não tenha feito isso.
Etapa 1: ativar a API App Distribution Tester
Selecione seu projeto no console do Google Cloud.
Em API Firebase App Testers, clique em Ativar.
Etapa 2: adicionar o App Distribution ao app
Abra o Podfile que você criou para o projeto (ou execute
pod init
para criar um). Em seguida, adicione a seguinte linha na seção de destino:pod 'FirebaseAppDistribution'
No diretório do podfile, execute
pod install
e abra o arquivo.xcworkspace
criado.Importe o módulo do Firebase no struct
App
ou emUIApplicationDelegate
:Swift
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
Configure uma instância compartilhada do
FirebaseApp
no métodoapplication(_:didFinishLaunchingWithOptions:)
do delegado do app:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
Se o swizzling estiver desativado, transmita todos os URLs abertos para o SDK do App Distribution na implementação de
application(_:open:options:)
:Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { if AppDistribution.appDistribution().application(application, open: url, options: options) { return true } // Handle other non-Firebase URLs here. return false }
Objective-C
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { if ([[FIRAppDistribution appDistribution] application:app openURL:url options:options]) { return YES; } // Handle other non-Firebase URLs here. return NO; }
Por fim, recompile o app.
Etapa 3: configurar alertas no app
O SDK do App Distribution oferece duas maneiras de configurar alertas de build no app para os testadores: uma configuração básica de alertas, que contém caixas de diálogo pré-criadas de atualizações do app e login para exibição para os testadores, e uma configuração de alerta avançada, que permite personalizar a própria interface do usuário. Se você é novo no SDK do App Distribution, recomendamos usar a configuração básica de alertas.
Configuração básica
Use checkForUpdate
para exibir uma caixa de diálogo "Ativar alertas" pré-criada para
testadores que ainda não ativaram os alertas e, em seguida, verificar se há um novo build
disponível. Quando chamado, o método gera a seguinte sequência:
Verifica se um testador ativou alertas ao solicitar que ele faça login no App Distribution com a conta do Google.
Se o testador ainda não tiver ativado os alertas, uma caixa de diálogo pré-criada será exibida.
Ativar 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 o método
signOutTester
seja chamado. Consulte a documentação de referência do método (Swift ou Objective-C) para mais informações.Verifica se há builds recém-disponibilizados para a instalação do testador.
É possível invocar checkForUpdate()
em qualquer ponto do app. Por exemplo, é possível
solicitar que os testadores instalem builds recém-disponibilizados na inicialização,
incluindo checkForUpdate()
em onAppear(perform:)
da visualização raiz
do app.
O exemplo a seguir verifica se o testador ativou ou não os alertas e tem acesso a um novo build e, em caso afirmativo, exibe uma caixa de diálogo quando o build está disponível para instalação:
Swift
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)
})
Objective-C
[[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 testador para corresponder melhor com
a experiê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 sua interface de usuário de login apenas para testadores ainda pendentes. Depois que o testador
fizer login, você poderá chamar checkForUpdate()
para verificar se ele tem acesso a um novo build.
Swift
// 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
})
}
Objective-C
// 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 informações sobre outros métodos, incluindo signOutTester()
,
consulte a documentação de referência do App Distribution para
Swift
e Objective-C.
Etapa 4: criar e testar a implementação
Por fim, crie o app e distribua o build para os testadores usando o console do Firebase para testar a implementação.
Acesse o Guia de solução de problemas do App Distribution para mais informações sobre problemas comuns, como:
- O testador não recebe alertas no app.
- O testador precisa fazer login no Google mais de uma vez.