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 iOS , caso ainda não o tenha feito.
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 seu aplicativo
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'
No diretório do seu podfile, execute
pod install
e abra o arquivo.xcworkspace
criado.Importe o módulo Firebase em sua
App
struct ouUIApplicationDelegate
:Rápido
import FirebaseCore import FirebaseAppDistribution
Objetivo-C
@import FirebaseCore; @import FirebaseAppDistribution;
Configure uma instância compartilhada
FirebaseApp
no métodoapplication(_:didFinishLaunchingWithOptions:)
delegado do seu aplicativo:Rápido
// Use Firebase library to configure APIs FirebaseApp.configure()
Objetivo-C
// Use Firebase library to configure APIs [FIRApp configure];
Se o swizzling estiver desabilitado, passe quaisquer URLs abertos para o SDK do App Distribution em sua implementação de
application(_:open:options:)
:Rápido
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 }
Objetivo-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; }
Finalmente, 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é-construída e diálogos de login para exibir aos testadores, e uma configuração de alerta avançada, que permite você pode personalizar 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 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:
Verifica se um testador ativou alertas solicitando que ele faça login no App Distribution com sua conta do Google.
Se o testador ainda não tiver ativado os alertas, será exibido um diálogo predefinido.
A ativação de alertas é um processo único no dispositivo de teste e persiste durante as atualizações do seu aplicativo. Os alertas permanecem ativados 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.Verifica se há compilações recentemente 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 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
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
[[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 na personalização da experiência de login do testador, para que ela corresponda 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. Assim, você pode optar por exibir sua IU de login apenas para testadores que ainda não fizeram login. chame checkForUpdate()
para verificar se o testador tem acesso a uma nova compilação.
Rápido
// 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
// 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 : crie e teste sua implementação
Por fim, crie seu aplicativo e teste sua implementação distribuindo a versã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