Powiadamianie testerów o nowych kompilacjach


Opcjonalne pakiety SDK Firebase App Distribution na iOS i Androida umożliwiają wyświetlanie alerty w aplikacji wysyłane testerom o nowych kompilacjach aplikacji, instalacji. Z tego przewodnika dowiesz się, jak korzystać z pakietów SDK na iOS i Androida (App Distribution) , aby tworzyć i dostosowywać alerty dotyczące nowych kompilacji dla testerów.

Zanim zaczniesz

Dodaj Firebase do projektu na iOS, jeśli jeszcze tego nie zrobiono.

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

  1. Wybierz swój projekt w konsoli Google Cloud.

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

Krok 2. Dodaj do aplikacji App Distribution

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

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

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

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Skonfiguruj udostępnioną instancję FirebaseApp w urzędzie certyfikacji Metoda application(_:didFinishLaunchingWithOptions:):

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Jeśli zamiana jest wyłączona, prześlij wszystkie otwierane adresy URL do pakietu SDK App Distribution w ramach 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 dotyczących kompilacji w aplikacji na 2 sposoby dla testerów: podstawowa konfiguracja alertów zawierająca gotową aktualizację aplikacji i okna logowania do wyświetlania testerom oraz zaawansowany alert co pozwala dostosować interfejs użytkownika. 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 włączania alertów którzy jeszcze nie włączyli alertów, a następnie sprawdź, czy nowa kompilacja i dostępności informacji. Po wywołaniu metoda wykonuje tę sekwencję:

  1. Sprawdza, czy tester włączył alerty, prosząc go o zalogowanie się App Distribution na swoje konto Google.

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

    Włączanie alertów jest jednorazowym procesem na urządzeniu testowym i jest aktywne przez cały okres aktualizacje aplikacji. Alerty pozostaną włączone na urządzeniu testowym do aplikacja została odinstalowana lub do czasu wywołania metody signOutTester. Więcej informacji znajdziesz w dokumentacji referencyjnej metody (Swift lub Objective-C).

  3. Sprawdzanie, czy są dostępne nowe wersje, które tester może zainstalować.

Działanie checkForUpdate() możesz wywołać w dowolnym momencie w aplikacji. Na przykład: może prosić testerów o zainstalowanie nowo dostępnych kompilacji podczas uruchamiania w tym checkForUpdate() w lokalizacji onAppear(perform:) w katalogu głównym aplikacji widok.

Ten przykład sprawdza, czy tester ma włączone alerty i czy ma dostęp do nowej kompilacji. Jeśli tak, wyświetla okno dialogowe, gdy kompilacja jest dostępna do zainstalowania:

Swift

Uwaga: ta usługa nie jest dostępna w przypadku systemów operacyjnych 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 docelowych z systemami macOS, Mac Catalyst, tvOS i 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ść dostosować sposób logowania się testera, aby do wyglądu i stylu aplikacji.

Ten przykład pozwala sprawdzić, czy tester zalogował się już na swoim Firebase App Distribution konto testera, możesz więc wyświetlić swoje tylko dla testerów, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz zadzwonić pod numer checkForUpdate(), aby sprawdzić, czy ma dostęp do nowej wersji.

Swift

Uwaga: ta usługa nie jest dostępna w przypadku systemów operacyjnych 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 docelowych z systemami macOS, Mac Catalyst, tvOS i 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 SwiftObjective-C.

Krok 4. Utwórz i przetestuj implementację

Na koniec stwórz aplikację i przetestuj jej implementację dystrybucja kompilacji testerom za pomocą konsoli Firebase.

Aby uzyskać pomoc w rozwiązywaniu typowych problemów, takich jak:

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