El SDK opcional de Firebase App Distribution te permite mostrar alertas en la app a tus verificadores cuando se encuentran nuevas compilaciones de tu app disponibles para instalar. En esta guía, se explica cómo usar el SDK de App Distribution a fin de 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 Google Cloud Console.
En API de Firebase App Testers , 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 'Firebase/AppDistribution'
En el directorio de tu podfile, ejecuta
pod install
y, luego, abre el archivo.xcworkspace
que se creó.Codifica el ID de la app de Google (obligatorio solo para iOS 9 y 10):
Codifica el ID de tu app de Google
Para agregar el esquema de URL
appdistribution-<encoded-google-app-id>
, incluye el fragmento en tuInfo.plist file
(consulta la documentación de Apple y obtén instrucciones para agregar el esquema de URL en 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>
Luego reemplaza los dos puntos (:) por guiones en el ID de la app de Google para codificarlo. Ten en cuenta que está en el archivo
GoogleService-Info.plist
. Por ejemplo, si el ID de tu app de Google es:7:77777777777:ios:123456789
El ID de codificado de la app de Google es:
7-77777777777-ios-123456789
Importa el módulo de Firebase en
UIApplicationDelegate
:Swift
import Firebase
Objective‑C
@import Firebase;
Configura una instancia compartida de
FirebaseApp
, generalmente en el métodoapplication:didFinishLaunchingWithOptions:
de tu app:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective‑C
// Use Firebase library to configure APIs [FIRApp configure];
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:
Para comprobar si un verificador habilitó las alertas, pídele que acceda a App Distribution con su Cuenta de Google.
Si el verificador aún no ha habilitado 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 (Objective-C o Swift) para obtener más información.Busca compilaciones disponibles recientemente para que las instale el verificador.
Puedes incluir checkForUpdate
en tu app cuando quieras. Por ejemplo, puedes
pedirles a los verificadores que instalen nuevas compilaciones disponibles cuando se inicie la app. Para hacerlo,
incluye checkForUpdate
en el elemento viewDidAppear
del UIViewController
.
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
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) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];
[alert addAction:okAction];
[self presentViewController:alert animated:YES completion:nil];
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 verificar 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 conocer métodos adicionales, 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 sobre problemas comunes, 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