Los SDK opcionales de iOS y Android de Firebase App Distribution te permiten mostrar alertas en la app para los verificadores cuando haya nuevas compilaciones disponibles para instalar. En esta guía, se explica cómo usar los SDK de Android y de iOS para App Distribution para crear y personalizar alertas de compilaciones nuevas para tus verificadores.
Antes de comenzar
Si aún no lo has hecho, agrega Firebase a tu proyecto de iOS.
Paso 1: Habilita la API de App Distribution Tester
Selecciona tu proyecto en la Consola de Google Cloud.
En Firebase App Testers API, haz clic en Habilitar.
Paso 2: Agrega App Distribution a tu app
Abre el Podfile que creaste para el proyecto (o ejecuta
pod init
a fin de crear uno) y, luego, agrega la siguiente línea en la sección de destino:pod 'FirebaseAppDistribution'
En el directorio de tu podfile, ejecuta
pod install
y, luego, abre el archivo.xcworkspace
que se creó.Importa el módulo de Firebase en tu struct
App
o enUIApplicationDelegate
:Swift
import FirebaseCore import FirebaseAppDistribution
Objective-C
@import FirebaseCore; @import FirebaseAppDistribution;
Configura una instancia compartida de
FirebaseApp
en el métodoapplication(_:didFinishLaunchingWithOptions:)
del delegado de la app:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
Si el swizzling está inhabilitado, pasa las URLs abiertas al SDK de App Distribution en tu implementación 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 último, vuelve a compilar la app.
Paso 3: Configura alertas en la app
El SDK de App Distribution ofrece dos formas de configurar las alertas de compilación en la app para los verificadores: una configuración básica de alertas, que incluye actualizaciones de apps compiladas previamente y diálogos de acceso que se mostrarán a los verificadores, y una configuración avanzada de alertas con la que puedes personalizar tu interfaz de usuario. Si no tienes experiencia en el SDK de App Distribution, te recomendamos que primero uses la configuración básica de alertas.
Configuración básica
Usa checkForUpdate
para mostrar un diálogo de alerta de habilitación compilado previamente a los verificadores que aún no activaron las alertas y, luego, comprueba si hay compilaciones nuevas disponibles. Cuando se llama al método, este invoca la siguiente secuencia:
Comprueba si un verificador habilitó las alertas. Para ello, solicítale que acceda a App Distribution con su Cuenta de Google.
Si el verificador aún no habilitó las alertas, se muestra un diálogo compilado previamente.
La habilitación de alertas es un proceso único en el dispositivo de prueba, el cual persiste en todas las actualizaciones de tu app. Las alertas seguirán habilitadas en el dispositivo de prueba hasta que se desinstale la app o se llame al método
signOutTester
. Consulta la documentación de referencia del método (Swift o Swift) para obtener más información.Busca compilaciones disponibles recientemente para que las instale el verificador.
Puedes invocar a checkForUpdate()
en cualquier momento en tu app. Por ejemplo, puedes pedirles a los verificadores que instalen compilaciones disponibles recientemente al inicio
incluyendo checkForUpdate()
en el elemento onAppear(perform:)
de la vista raíz de tu
app.
En el siguiente ejemplo, se comprueba si el verificador habilitó las alertas, y si tiene acceso a una compilación nueva. De ser así, se muestra un diálogo cuando la compilación está disponible para instalarse:
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];
}
}];
Configuración avanzada
Los métodos signInTester()
y isTesterSignedIn
te ofrecen más flexibilidad para personalizar la experiencia de acceso de tus verificadores a fin de que coincida mejor con el estilo de la app.
En el siguiente ejemplo, se comprueba si el verificador ya accedió a su cuenta de Firebase App Distribution, de modo que puedas mostrar la IU de acceso solo a los verificadores que aún no accedieron. Después de que el verificador haya accedido, puedes llamar a checkForUpdate()
para comprobar si tiene acceso a una compilación nueva.
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
}];
}
Si quieres obtener información sobre otros métodos, como signOutTester()
,
consulta la documentación de referencia de App Distribution para
Swift
y Objective-C.
Paso 4: Compila y prueba tu implementación
Por último, distribuye la compilación a los verificadores con Firebase console para compilar la app y probar la implementación.
Visita la guía de solución de problemas de App Distribution para obtener ayuda con problemas habituales, como los siguientes:
- El verificador no recibe alertas en la app.
- Al verificador se le solicita que acceda a Google más de una vez