Informer les testeurs des nouvelles versions

Les SDK facultatifs Firebase App Distribution iOS et Android vous permettent d'afficher des alertes dans l'application à vos testeurs lorsque de nouvelles versions de votre application sont disponibles pour installation. Ce guide explique comment utiliser les SDK App Distribution iOS et Android pour créer et personnaliser de nouvelles alertes de build pour vos testeurs.

Avant que tu commences

Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet iOS .

Étape 1 : Activer l'API App Distribution Tester

  1. Sélectionnez votre projet dans la console Google Cloud .

  2. Sous API Firebase App Testers , cliquez sur Activer .

Étape 2 : Ajoutez App Distribution à votre application

  1. Ouvrez le Podfile que vous avez créé pour le projet (ou exécutez pod init pour en créer un), puis ajoutez la ligne suivante dans la section cible :

    pod 'FirebaseAppDistribution'
  2. Dans le répertoire de votre podfile, exécutez pod install , puis ouvrez le fichier .xcworkspace créé.

  3. Importez le module Firebase dans votre structure App ou UIApplicationDelegate :

    Rapide

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objectif c

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Configurez une instance partagée FirebaseApp dans la méthode application(_:didFinishLaunchingWithOptions:) de votre délégué d'application :

    Rapide

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

    Objectif c

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Si le swizzling est désactivé, transmettez toutes les URL ouvertes au SDK App Distribution dans votre implémentation de application(_:open:options:) :

    Rapide

    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
    }
    

    Objectif 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. Enfin, recompilez votre application.

Étape 3 : Configurer les alertes dans l'application

Le SDK App Distribution propose deux manières de configurer des alertes de création d'application pour vos testeurs : une configuration d'alerte de base, qui comprend une mise à jour d'application prédéfinie et des dialogues de connexion à afficher aux testeurs, et une configuration d'alerte avancée, qui permet vous de personnaliser votre propre interface utilisateur. Nous vous recommandons d’utiliser d’abord la configuration d’alerte de base si vous débutez avec le SDK App Distribution.

Configuration de base

Utilisez checkForUpdate pour afficher une boîte de dialogue d'activation des alertes prédéfinie aux testeurs qui n'ont pas encore activé les alertes, puis vérifiez si une nouvelle version est disponible. Lorsqu'elle est appelée, la méthode exécute la séquence suivante :

  1. Vérifie si un testeur a activé les alertes en l'invitant à se connecter à App Distribution avec son compte Google.

  2. Si le testeur n'a pas encore activé les alertes, affiche une boîte de dialogue prédéfinie.

    L'activation des alertes est un processus unique sur l'appareil de test et persiste dans les mises à jour de votre application. Les alertes restent activées sur l'appareil de test jusqu'à ce que l'application soit désinstallée ou jusqu'à ce que la méthode signOutTester soit appelée. Consultez la documentation de référence de la méthode ( Swift ou Objective-C ) pour plus d'informations.

  3. Vérifie les versions nouvellement disponibles que le testeur doit installer.

Vous pouvez appeler checkForUpdate() à tout moment dans votre application. Par exemple, vous pouvez inviter vos testeurs à installer les versions nouvellement disponibles au démarrage en incluant checkForUpdate() dans le onAppear(perform:) de la vue racine de votre application.

L'exemple suivant vérifie si le testeur a activé les alertes et a accès à une nouvelle build, et si c'est le cas, affiche une boîte de dialogue lorsque la build est disponible pour l'installation :

Rapide

Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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)
})

Objectif c

Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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];
  }
}];

Configuration avancée

Les méthodes signInTester() et isTesterSignedIn vous offrent plus de flexibilité pour personnaliser l'expérience de connexion de votre testeur, afin qu'elle puisse mieux correspondre à l'apparence de votre application.

L'exemple suivant vérifie si le testeur s'est déjà connecté à son compte de testeur Firebase App Distribution. Vous pouvez donc choisir d'afficher votre interface utilisateur de connexion uniquement pour les testeurs qui ne sont pas encore connectés. Une fois que le testeur s'est connecté, vous pouvez alors appelez checkForUpdate() pour vérifier si le testeur a accès à une nouvelle build.

Rapide

Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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
  })
}

Objectif c

Remarque : ce produit n'est pas disponible sur les cibles macOS, Mac Catalyst, tvOS ou 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
  }];
}

Pour plus d'informations sur les méthodes supplémentaires, notamment signOutTester() , consultez la documentation de référence App Distribution pour Swift et Objective-C .

Étape 4 : Créez et testez votre implémentation

Enfin, créez votre application et testez votre implémentation en distribuant la version aux testeurs à l'aide de la console Firebase.

Consultez le guide de dépannage d’App Distribution pour obtenir de l’aide sur les problèmes courants, tels que :

  • Le testeur ne reçoit pas d'alertes dans l'application
  • Le testeur est invité à se connecter à Google plusieurs fois