Los SDK opcionales de Firebase App Distribution para iOS y Android le permiten mostrar alertas en la aplicación a sus evaluadores cuando hay nuevas compilaciones de su aplicación disponibles para instalar. Esta guía explica cómo usar los SDK de iOS y Android de App Distribution para crear y personalizar nuevas alertas de compilación para sus evaluadores.
Antes de que empieces
Si aún no lo ha hecho, agregue Firebase a su proyecto de iOS .
Paso 1 : habilite la API del probador de distribución de aplicaciones
Seleccione su proyecto en Google Cloud Console .
En Firebase App Testers API , haga clic en Habilitar .
Paso 2 : agregue la distribución de aplicaciones a su aplicación
Abra el Podfile que creó para el proyecto (o ejecute
pod init
para crear uno), luego agregue la siguiente línea dentro de la sección de destino:pod 'FirebaseAppDistribution'
En el directorio de su podfile, ejecute
pod install
, luego abra el archivo.xcworkspace
creado.Codifique su ID de aplicación de Google ( requerido solo para las versiones 9 y 10 de iOS ):
Codifique su ID de aplicación de Google
Agregue el esquema de URL
appdistribution-<encoded-google-app-id>
incluyendo el fragmento en suInfo.plist file
(consulte la documentación de Apple para obtener instrucciones sobre cómo 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, codifique su ID de aplicación de Google reemplazando los dos puntos (:) con guiones (-). Tenga en cuenta que su ID de aplicación de Google se encuentra en su archivo
GoogleService-Info.plist
. Por ejemplo, si su ID de aplicación de Google es:7:77777777777:ios:123456789
Su ID de aplicación de Google codificado es:
7-77777777777-ios-123456789
Importe el módulo Firebase en su estructura de
App
oUIApplicationDelegate
:Rápido
import FirebaseCore
C objetivo
@import FirebaseCore;
Configure una instancia compartida de
FirebaseApp
, normalmente en el métodoapplication(_:didFinishLaunchingWithOptions:)
del inicializador de suApp
o del delegado de la aplicación:Rápido
// Use Firebase library to configure APIs FirebaseApp.configure()
C objetivo
// Use Firebase library to configure APIs [FIRApp configure];
Finalmente, vuelva a compilar su aplicación.
Paso 3 : configurar alertas en la aplicación
El SDK de distribución de aplicaciones proporciona dos formas de configurar alertas de compilación en la aplicación para sus evaluadores: una configuración de alerta básica, que viene con una actualización de la aplicación prediseñada y diálogos de inicio de sesión para mostrar a los evaluadores, y una configuración de alerta avanzada, que permite personalizar su propia interfaz de usuario. Recomendamos usar primero la configuración de alerta básica si es nuevo en el SDK de distribución de aplicaciones.
Configuracion basica
Use checkForUpdate
para mostrar un diálogo de alertas de habilitación preconstruido para los probadores que aún no han habilitado alertas y luego verifique si hay una nueva compilación disponible. Cuando se llama, el método ejecuta la siguiente secuencia:
Comprueba si un evaluador ha habilitado las alertas al solicitarle que inicie sesión en Distribución de aplicaciones con su cuenta de Google.
Si el evaluador aún no ha habilitado las alertas, muestra un diálogo prediseñado.
Habilitar alertas es un proceso que se realiza una sola vez en el dispositivo de prueba y persiste entre las actualizaciones de su aplicación. Las alertas permanecen habilitadas en el dispositivo de prueba hasta que se desinstala la aplicación o hasta que se llama al método
signOutTester
. Consulte la documentación de referencia del método ( Swift u Objective-C ) para obtener más información.Comprueba si hay compilaciones disponibles recientemente para que las instale el probador.
Puede invocar checkForUpdate()
en cualquier punto de su aplicación. Por ejemplo, puede solicitar a sus evaluadores que instalen compilaciones disponibles recientemente al inicio al incluir checkForUpdate()
en onAppear(perform:)
de la vista raíz de su aplicación.
El siguiente ejemplo verifica si el probador ha habilitado o no las alertas y tiene acceso a una nueva compilación y, de ser así, muestra un diálogo cuando la compilación está disponible para instalar:
Rápido
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)
})
C objetivo
[[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()
e isTesterSignedIn
le brindan más flexibilidad al personalizar la experiencia de inicio de sesión de su evaluador, para que pueda adaptarse mejor a la apariencia de su aplicación.
El siguiente ejemplo verifica si el evaluador ya inició sesión en su cuenta de evaluador de Firebase App Distribution, por lo que puede optar por mostrar su IU de inicio de sesión solo para los evaluadores que aún no han iniciado sesión. Una vez que el evaluador haya iniciado sesión, puede llame a checkForUpdate()
para verificar si el probador tiene acceso a una nueva compilación.
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
})
}
C objetivo
// 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 obtener información sobre métodos adicionales, incluido signOutTester()
, consulte la documentación de referencia de distribución de aplicaciones para Swift y Objective-C .
Paso 4 : Cree y pruebe su implementación
Finalmente, cree su aplicación y pruebe su implementación distribuyendo la compilación a los evaluadores mediante la consola de Firebase.
Visite la guía de solución de problemas de distribución de aplicaciones para obtener ayuda con problemas comunes, como:
- Tester no recibe alertas en la aplicación
- Se le solicita al evaluador que inicie sesión en Google más de una vez