Avvisare i tester in merito alle nuove build


Gli SDK facoltativi Firebase App Distribution per iOS e Android ti consentono di mostrare avvisi in-app ai tester quando sono disponibili nuove build della tua app da installare. Questa guida spiega come utilizzare gli SDK per iOS e Android per creare e personalizzare nuovi avvisi di build per i tuoi tester.App Distribution

Prima di iniziare

Se non l'hai ancora fatto, aggiungi Firebase al tuo progetto iOS.

Passaggio 1: attiva l'API App Distribution Tester

  1. Seleziona il progetto nella Google Cloud console.

  2. In API Firebase App Testers, fai clic su Abilita.

Passaggio 2: aggiungi App Distribution alla tua app

  1. Apri il Podfile che hai creato per il progetto (o esegui pod init per crearne uno), quindi aggiungi la seguente riga all'interno della sezione target:

    pod 'FirebaseAppDistribution'
  2. Nella directory del podfile, esegui pod install, quindi apri il file .xcworkspace creato.

  3. Importa il modulo Firebase nella struttura App o in UIApplicationDelegate:

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Configura un'istanza condivisa di FirebaseApp nel metodo application(_:didFinishLaunchingWithOptions:) del delegato dell'app:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Se lo swizzling è disattivato, passa gli URL aperti all'SDK App Distribution nell'implementazione di 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;
    }
    
  6. Infine, ricompila l'app.

Passaggio 3: configura gli avvisi in-app

L'SDK App Distribution offre due modi per configurare gli avvisi di build in-app per i tuoi tester: una configurazione di avviso di base, che include finestre di dialogo predefinite per l'aggiornamento dell'app e l'accesso da mostrare ai tester, e una configurazione di avviso avanzata, che ti consente di personalizzare la tua interfaccia utente. Se non hai mai utilizzato l'SDK App Distribution, ti consigliamo di iniziare con la configurazione di base degli avvisi.

Configurazione di base

Utilizza checkForUpdate per visualizzare una finestra di dialogo predefinita per l'attivazione degli avvisi per i tester che non hanno ancora attivato gli avvisi e poi verifica se è disponibile una nuova build. Quando viene chiamato, il metodo esegue la seguente sequenza:

  1. Controlla se un tester ha attivato gli avvisi chiedendogli di accedere a App Distribution con il suo Account Google.

  2. Se il tester non ha ancora attivato gli avvisi, viene visualizzata una finestra di dialogo predefinita.

    L'attivazione degli avvisi è una procedura una tantum sul dispositivo di test e rimane attiva anche dopo gli aggiornamenti dell'app. Gli avvisi rimangono attivi sul dispositivo di test finché l'app non viene disinstallata o finché non viene chiamato il metodo signOutTester. Per saperne di più, consulta la documentazione di riferimento del metodo (Swift o Objective-C).

  3. Verifica la presenza di nuove build disponibili per l'installazione da parte del tester.

Puoi richiamare checkForUpdate() in qualsiasi punto dell'app. Ad esempio, puoi chiedere ai tester di installare le build appena disponibili all'avvio includendo checkForUpdate() in onAppear(perform:) della visualizzazione radice dell'app.

Il seguente esempio controlla se il tester ha attivato gli avvisi e ha accesso a una nuova build e, in caso affermativo, mostra una finestra di dialogo quando la build è disponibile per l'installazione:

Swift

Nota:questo prodotto non è disponibile per i target macOS, Mac Catalyst, tvOS o watchOS.
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

Nota:questo prodotto non è disponibile per i target macOS, Mac Catalyst, tvOS o watchOS.
[[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];
  }
}];

Configurazione avanzata

I metodi signInTester() e isTesterSignedIn offrono maggiore flessibilità per personalizzare l'esperienza di accesso dei tester, in modo che possa corrispondere meglio all'aspetto della tua app.

L'esempio seguente verifica se il tester ha già eseguito l'accesso al proprio account tester, in modo da poter scegliere di mostrare l'interfaccia utente di accesso solo ai tester che non hanno ancora eseguito l'accesso.Firebase App Distribution Dopo che il tester ha eseguito l'accesso, puoi chiamare checkForUpdate() per verificare se ha accesso a una nuova build.

Swift

Nota:questo prodotto non è disponibile per i target macOS, Mac Catalyst, tvOS o watchOS.
// 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

Nota:questo prodotto non è disponibile per i target macOS, Mac Catalyst, tvOS o watchOS.
// 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
  }];
}

Per informazioni su altri metodi, incluso signOutTester(), consulta la documentazione di riferimento di App Distribution per Swift e Objective-C.

Passaggio 4: crea e testa l'implementazione

Infine, crea la tua app e testa l'implementazione distribuendo la build ai tester utilizzando la console Firebase.

Visita la App Distribution Guida alla risoluzione dei problemi per ricevere assistenza per problemi comuni, ad esempio:

  • Il tester non riceve avvisi in-app
  • Al tester viene chiesto di accedere a Google più di una volta