Powiadamiaj testerów o nowych kompilacjach

Opcjonalne pakiety SDK Firebase App Distribution na iOS i Androida pozwalają wyświetlać testerom alerty o nowych kompilacjach aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak używać pakietów SDK App Distribution na iOS i Androida do tworzenia i dostosowywania nowych alertów kompilacji dla testerów.

Zanim zaczniesz

Dodaj Firebase do swojego projektu iOS, chyba że masz to już za sobą.

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 Rozpowszechnianie aplikacji do swojej aplikacji

  1. Otwórz utworzony plik Podfile (lub uruchom plik pod init, aby go utworzyć), 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 utworzony plik .xcworkspace.

  3. Zaimportuj moduł Firebase do struktury App lub UIApplicationDelegate:

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Skonfiguruj udostępnioną instancję FirebaseApp w metodzie application(_:didFinishLaunchingWithOptions:) przedstawiciela 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 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 App Distribution SDK udostępnia testerom 2 sposoby konfigurowania alertów kompilacji w aplikacji: podstawową konfigurację alertów, która zawiera gotową aktualizację aplikacji i okna logowania, oraz zaawansowaną konfigurację alertów, która pozwala dostosować własny interfejs użytkownika. Jeśli po raz pierwszy korzystasz z pakietu SDK Rozpowszechniania aplikacji, zalecamy najpierw użyć podstawowej konfiguracji alertów.

Konfiguracja podstawowa

Użyj checkForUpdate, aby wyświetlić wstępnie utworzone okno włączania alertów dla testerów, którzy jeszcze nie włączyli alertów, a następnie sprawdzić, czy jest dostępna nowa kompilacja. Po wywołaniu metoda wywołuje tę sekwencję:

  1. Sprawdza, czy tester włączył alerty, prosząc go o zalogowanie się w Rozpowszechnianiu aplikacji przy użyciu swojego konta Google.

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

    Alerty można włączyć jednorazowo na urządzeniu testowym i następują po każdej aktualizacji aplikacji. Alerty pozostają włączone na urządzeniu testowym do czasu 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, które może zainstalować tester.

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

Poniższy przykład pokazuje, czy tester włączył alerty i ma dostęp do nowej kompilacji. Jeśli kompilacja będzie dostępna, wyświetli się okno dialogowe, gdy kompilacja będzie dostępna do zainstalowania:

Swift

Uwaga: ta usługa nie jest dostępna na urządzeniach docelowych z systemami macOS, Mac Catalyst, tvOS i 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ą Ci większą elastyczność w dostosowywaniu sposobu logowania się testera, tak aby był lepiej dopasowany do wyglądu i stylu aplikacji.

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

Swift

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 (!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 metodzie signOutTester(), znajdziesz w dokumentacji referencyjnej dotyczącej dystrybucji aplikacji Swift i Objective-C.

Krok 4. Utwórz i przetestuj implementację

Na koniec skompiluj aplikację i przetestuj jej implementację, przekazując kompilację testerom za pomocą konsoli Firebase.

Zapoznaj się z przewodnikiem po rozwiązywaniu problemów z rozpowszechnianiem aplikacji, aby uzyskać pomoc dotyczącą typowych problemów, takich jak:

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