Configura alertas de compilación nuevas en la app con el SDK de App Distribution

El SDK de Firebase App Distribution (cuyo uso es opcional) te permite mostrar alertas en las apps 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 verificadores de App Distribution

  1. Selecciona tu proyecto en Google Cloud Console.

  2. En Firebase App Testers API, haz clic en Habilitar.

Paso 2: Agrega App Distribution a tu app

Te recomendamos que uses CocoaPods para instalar las bibliotecas de Firebase. Si prefieres no usarlo, puedes integrar directamente los frameworks del SDK.

  1. 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'
  2. En el directorio de tu podfile, ejecuta pod install y, luego, abre el archivo .xcworkspace que se creó.

  3. 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 tu Info.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
  4. Importa el módulo de Firebase en UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective‑C

    @import Firebase;
    
  5. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions:de tu app:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective‑C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. 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 de alerta básica, que incluye un diálogo de acceso compilado previamente que se mostrará a los verificadores, y una configuración de alerta avanzada, con la que puedes personalizar tu interfaz de usuario (IU). Si es la primera vez que usas el SDK, te recomendamos que empieces con la configuración de alerta básica.

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:

  1. Para comprobar si un verificador habilitó las alertas, pídele que acceda a App Distribution con su Cuenta de Google.

  2. 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. Una vez que se habiliten las alertas, seguirán activas en el dispositivo hasta que se desinstale la app o hasta que se llame al método signOutTester (para obtener más información sobre este método de configuración avanzada, consulta la documentación de referencia de App Distribution para Swift y Objective-C).

  3. Busca compilaciones disponibles recientemente para que las instale el verificador.

Por ejemplo, el siguiente código comprueba que el verificador tenga habilitadas las alertas y pueda acceder a una compilación nueva:

Swift

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})

Objective‑C

[[FIRAppDistribution appDistribution]
    checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                   NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];

Ten en cuenta que puedes incluir este método en tu app cuando quieras. Por ejemplo, puedes incluir checkForUpdate en el elemento viewDidAppear del UIViewController para pedirles a los verificadores que instalen nuevas compilaciones disponibles cuando se inicie la app.

En el siguiente ejemplo se muestra un diálogo al verificador cuando hay una nueva compilación disponible para instalar:

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];
  }
}];

Si quieres obtener información sobre otros métodos, consulta la documentación de referencia de App Distribution para Swift y Objective‑C.

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 obtener información sobre 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