Powiadamianie testerów o nowych kompilacjach


Opcjonalne pakiety SDK Firebase App Distribution na iOS i Androida umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe kompilacje aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak za pomocą pakietów SDK App Distribution na iOS i Androida tworzyć i dostosowywać alerty o nowych kompilacjach dla testerów.

Zanim zaczniesz

Dodaj Firebase do projektu aplikacji na iOS, jeśli nie korzystasz w nim jeszcze z tej usługi.

Krok 1. Włącz interfejs App Distribution Tester API.

  1. Wybierz projekt w konsoli Google Cloud.

  2. W sekcji Firebase App Testers API kliknij Włącz.

Krok 2. Dodaj App Distribution do aplikacji

  1. Otwórz plik Podfile utworzony dla projektu (lub uruchom pod init, aby go utworzyć), a następnie dodaj ten wiersz w sekcji docelowej:

    pod 'FirebaseAppDistribution'
  2. W katalogu pliku podfile uruchom pod install, a następnie otwórz utworzony plik .xcworkspace.

  3. Zaimportuj moduł Firebase w strukturze App lub UIApplicationDelegate:

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Skonfiguruj udostępnioną instancję FirebaseApp w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Jeśli swizzling jest wyłączony, przekaż wszystkie otwarte adresy URL do pakietu SDK App Distribution w implementacji 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. Na koniec ponownie skompiluj aplikację.

Krok 3. Skonfiguruj alerty w aplikacji

Pakiet SDK App Distribution umożliwia skonfigurowanie alertów o kompilacjach w aplikacji dla testerów na 2 sposoby: podstawowa konfiguracja alertów, która obejmuje gotowe okna aktualizacji aplikacji i logowania wyświetlane testerom, oraz zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu. Jeśli dopiero zaczynasz korzystać z pakietu SDK App Distribution, zalecamy najpierw użycie podstawowej konfiguracji alertów.

Konfiguracja podstawowa

Użyj checkForUpdate, aby wyświetlić gotowe okno dialogowe włączania alertów testerom, którzy jeszcze nie włączyli alertów, a następnie sprawdź, czy jest dostępna nowa kompilacja. Po wywołaniu metoda wykonuje następującą sekwencję:

  1. Sprawdza, czy tester włączył alerty, prosząc go o zalogowanie się w App Distribution za pomocą konta Google.

  2. Jeśli tester nie włączył jeszcze alertów, wyświetla gotowe okno.

    Włączenie alertów na urządzeniu testowym jest procesem jednorazowym i pozostaje aktywne po aktualizacjach aplikacji. Alerty pozostają włączone na urządzeniu testowym do momentu odinstalowania aplikacji lub wywołania metody signOutTester. Więcej informacji znajdziesz w dokumentacji referencyjnej metody (Swift lub Objective-C).

  3. Sprawdza, czy są dostępne nowe kompilacje do zainstalowania przez testera.

Metodę checkForUpdate() możesz wywołać w dowolnym momencie w aplikacji. Możesz na przykład poprosić testerów o zainstalowanie nowo dostępnych kompilacji podczas uruchamiania, dodając metodę checkForUpdate() w onAppear(perform:) widoku głównego aplikacji.

W tym przykładzie sprawdzamy, czy tester ma włączone alerty i dostęp do nowej kompilacji. Jeśli tak, wyświetlamy okno, gdy kompilacja jest dostępna do zainstalowania:

Swift

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem macOS, Mac Catalyst, tvOS ani 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

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem macOS, Mac Catalyst, tvOS ani 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];
  }
}];

Konfiguracja zaawansowana

Metody signInTester() i isTesterSignedIn dają większą elastyczność w dostosowywaniu procesu logowania testera, dzięki czemu można go lepiej dopasować do wyglądu i stylu aplikacji.

Poniższy przykład sprawdza, czy tester zalogował się już na swoje konto testera Firebase App Distribution, dzięki czemu możesz wyświetlać interfejs logowania tylko tym testerom, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz wywołać metodę checkForUpdate(), aby sprawdzić, czy ma on dostęp do nowej kompilacji.

Swift

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem macOS, Mac Catalyst, tvOS ani 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

Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem macOS, Mac Catalyst, tvOS ani 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
  }];
}

Informacje o dodatkowych metodach, w tym signOutTester(), znajdziesz w dokumentacji referencyjnej App Distribution dotyczącej języków Swift i Objective-C.

Krok 4. Utwórz i przetestuj implementację

Na koniec utwórz aplikację i przetestuj implementację, rozpowszechniając kompilację wśród testerów za pomocą konsoli Firebase.

Zapoznaj się z przewodnikiem rozwiązywania problemów z App Distribution, aby uzyskać pomoc w rozwiązywaniu typowych problemów, takich jak:

  • Tester nie otrzymuje alertów w aplikacji
  • Tester jest proszony o zalogowanie się w Google więcej niż raz