Skonfiguruj alerty o nowej kompilacji w aplikacji za pomocą pakietu App Distribution SDK

Opcjonalny pakiet Firebase App Distribution SDK umożliwia wyświetlanie testerom alertów w aplikacji, gdy nowe kompilacje aplikacji będą dostępne do zainstalowania. W tym przewodniku wyjaśniono, jak używać zestawu SDK dystrybucji aplikacji do tworzenia i dostosowywania alertów o nowych kompilacjach dla testerów.

Zanim zaczniesz

Jeśli jeszcze nie masz, dodać Firebase do projektu iOS .

Krok 1: Włącz App Distribution Tester API

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

  2. Pod Firebase App Testery API, kliknij przycisk Włącz.

Krok 2: Dodaj App Distribution do swojej aplikacji

  1. Otwórz utworzony dla projektu podfile (lub uruchomić pod init stworzyć jeden), a następnie dodaj następującą linię w obszarze docelowym:

    pod 'Firebase/AppDistribution'
  2. W katalogu swojej podfile, prowadzony pod install , a następnie otwórz utworzony .xcworkspace pliku.

  3. Zakodować Google App ID (wymagany tylko dla iOS wersji 9 i 10):

    Zakoduj swój identyfikator aplikacji Google

    Dodaj appdistribution-<encoded-google-app-id> schematu URL o tym fragment w swoim Info.plist file (patrz dokumentacja firmy Apple w celu uzyskania instrukcji dotyczących sposobu dodawania schematu URL w Xcode):

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appdistribution-<encoded-google-app-id></string>
            </array>
        </dict>
    </array>
    

    Następnie zakoduj swój identyfikator aplikacji Google, zastępując dwukropki (:) myślnikami (-). Należy pamiętać, że Google App ID znajduje się w GoogleService-Info.plist pliku. Na przykład, jeśli identyfikator Twojej aplikacji Google to:

    7:77777777777:ios:123456789

    Twój zakodowany identyfikator aplikacji Google to:

    7-77777777777-ios-123456789
  4. Zaimportować moduł Firebase w UIApplicationDelegate :

    Szybki

    import Firebase
    

    Cel C

    @import Firebase;
    
  5. Skonfiguruj FirebaseApp wspólne wystąpienie, zazwyczaj w swojej aplikacji application:didFinishLaunchingWithOptions: metodę:

    Szybki

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

    Cel C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. Na koniec ponownie skompiluj swoją aplikację.

Krok 3: Konfigurowanie alertów w aplikacji

Pakiet App Distribution SDK zapewnia dwa sposoby konfigurowania alertów kompilacji w aplikacji dla testerów: podstawową konfigurację alertów, która zawiera wstępnie utworzone okno dialogowe logowania, które jest wyświetlane testerom, oraz zaawansowaną konfigurację alertów, która umożliwia dostosować własny interfejs użytkownika (UI). Zalecamy, aby najpierw użyć podstawowej konfiguracji alertów, jeśli dopiero zaczynasz korzystać z zestawu SDK dystrybucji aplikacji.

Konfiguracja podstawowa

Zastosowanie checkForUpdate do wyświetlania gotowych włączyć alerty dialog do testerów, którzy jeszcze nie włączone alarmy, a następnie sprawdzić, czy nowy build jest dostępna. Po wywołaniu metoda wykonuje następującą sekwencję:

  1. Sprawdza, czy tester włączył alerty, prosząc go o zalogowanie się do dystrybucji aplikacji za pomocą swojego konta Google.

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

    Włączenie alertów to jednorazowy proces na urządzeniu testowym, który utrzymuje się przez wszystkie aktualizacje aplikacji. Alarmy pozostaną włączone na urządzeniu testowym, dopóki albo aplikacja jest odinstalowane, lub dopóki signOutTester wywoływana jest metoda. Zobacz dokumentację metody za odniesienia ( Swift lub Objective-C ), aby uzyskać więcej informacji.

  3. Sprawdza dostępność nowych kompilacji do zainstalowania przez testera.

Możesz dołączyć checkForUpdate w dowolnym momencie w swojej aplikacji. Na przykład, można skłonić swoich testerów zainstalować nowo dostępne buduje na starcie o tym checkForUpdate w viewDidAppear z UIViewController .

Poniższe przykłady sprawdzają, czy tester włączył alerty i ma dostęp do nowej kompilacji, a jeśli tak, wyświetla okno dialogowe, gdy kompilacja jest dostępna do zainstalowania:

Sprawdź, włączonych alarmów:

Szybki

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})

Cel C

[[FIRAppDistribution appDistribution]
    checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                   NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];

Wyświetlenie dialogu do instalowania nowej kompilacji:

Szybki

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  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)
})

Cel C

[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];

  UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];

  [alert addAction:okAction];
  [self presentViewController:alert animated:YES completion:nil];

  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];
  }
}];

Zaawansowana konfiguracja

Metody signInTester i isTesterSignedIn daje większą elastyczność Dostosowywanie testera logowania doświadczenia, więc może lepiej pasuje do Twojej aplikacji wygląd.

Poniższy przykład sprawdza, czy tester zalogował się już na swoje konto testera Firebase App Distribution, więc możesz wybrać wyświetlanie interfejsu logowania tylko dla testerów, którzy się jeszcze nie zalogowali. Po zalogowaniu się testera możesz zadzwoń checkForUpdate , by sprawdzić, czy tester ma dostęp do nowej kompilacji.

Szybki

// 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
  })
}

Cel C

// 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
  }];
}

Aby uzyskać informacje na temat dodatkowych metod, w tym signOutTester , zobacz dokumentację referencyjną Distribution App dla Swift i Objective-C .

Krok 4: Budowa i badanie implementacji

Wreszcie, budować swoją aplikację i przetestować wdrożenie przez rozprowadzenie build do testerów z wykorzystaniem konsoli Firebase.

Odwiedź App Distribution Przewodnik rozwiązywania problemów w celu uzyskania pomocy z typowych problemów, takich jak:

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