Udostępnij za pośrednictwem


Dystrybucja w usłudze App Center — aktualizacje w aplikacji systemu iOS

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Chociaż możesz nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Usługa App Center Distribute umożliwi użytkownikom zainstalowanie nowej wersji aplikacji podczas jej dystrybucji za pośrednictwem Centrum aplikacji. Po udostępnieniu nowej wersji aplikacji zestaw SDK wyświetli użytkownikom okno dialogowe aktualizacji umożliwiające pobranie lub odroczenie nowej wersji. Po wybraniu aktualizacji zestaw SDK rozpocznie aktualizowanie aplikacji.

Uwaga

Istnieje kilka kwestii, które należy wziąć pod uwagę podczas korzystania z aktualizacji w aplikacji:

  1. Jeśli aplikacja została wydana w App Store, aktualizacje w aplikacji zostaną wyłączone.
  2. Jeśli uruchamiasz zautomatyzowane testy interfejsu użytkownika, włączone aktualizacje w aplikacji spowodują zablokowanie zautomatyzowanych testów interfejsu użytkownika podczas próby uwierzytelnienia w zapleczu Centrum aplikacji. Zalecamy, aby nie włączyć usługi App Center Distribute dla docelowego testu interfejsu użytkownika.

Uwaga

4.0.0 Wprowadzono zmiany powodujące niezgodność w usłudze App Center. Postępuj zgodnie z sekcją Migrate to App Center SDK 4.0.0 and higher (Migrowanie do zestawu APP Center SDK 4.0.0 i nowszych), aby przeprowadzić migrację centrum aplikacji z poprzednich wersji.

Ważne

Zestaw SDK usługi App Center nie obsługuje wielu aplikacji okien, które zostały wprowadzone w systemie iOS 13.

Dodawanie aktualizacji w aplikacji do aplikacji

Postępuj zgodnie z sekcją Wprowadzenie , jeśli zestaw SDK nie został skonfigurowany w aplikacji.

1. Dodawanie modułu dystrybucji centrum aplikacji

Zestaw SDK centrum aplikacji został zaprojektowany z modułowym podejściem — wystarczy zintegrować tylko moduły usług, które cię interesują.

Integracja za pośrednictwem kakapodów

Jeśli integrujesz usługę App Center z aplikacją za pomocą narzędzia Cocoapods, dodaj następującą zależność do pliku podfile i uruchom polecenie pod install.

pod 'AppCenter/Distribute'

Integracja za pośrednictwem Carthage

  1. Dodaj następującą zależność do elementu Cartfile , aby uwzględnić dystrybucję usługi App Center.

    # Use the following line to get the latest version of App Center
    github "microsoft/appcenter-sdk-apple"
    
    # Use the following line to get the specific version of App Center
    github "microsoft/appcenter-sdk-apple" ~> X.X.X
    
  2. Uruchom polecenie carthage update.

  3. Otwórz kartę Ustawienia ogólne aplikacji docelowej. Przeciągnij i upuść plik AppCenterDistribute.framework z folderu Carthage/Build/iOS do sekcji Połączone struktury i biblioteki w programie XCode.

  4. Przeciągnij i upuść pakiet AppCenterDistributeResources.bundle z witryny AppCenterDistribute.framework do narzędzia Project Navigator programu XCode.

  5. Zostanie wyświetlone okno dialogowe, upewnij się, że element docelowy aplikacji jest zaznaczony. Następnie kliknij przycisk Zakończ.

Integracja za pośrednictwem menedżera pakietów Swift

  1. W menu programu Xcode kliknij pozycję File Swift Packages > Add Package Dependency (Dodaj > zależność pakietu).
  2. W wyświetlonym oknie dialogowym wprowadź adres URL repozytorium: https://github.com/microsoft/appcenter-sdk-apple.git.
  3. W obszarze Wersja wybierz pozycję Do następnego majora i wybierz opcję domyślną.
  4. Wybierz pozycję AppCenterDistribute w kolumnie Package Product (Produkt pakietu ).

Integracja przez skopiowanie plików binarnych do projektu

Jeśli nie chcesz używać narzędzia Cocoapods, możesz zintegrować moduły, kopiując pliki binarne do projektu. Wykonaj następujące czynności:

Uwaga

Zestaw SDK usługi App Center obsługuje korzystanie z usługi XCframework. Jeśli chcesz zintegrować aplikację XCframeworks z projektem, pobierz AppCenter-SDK-Apple-XCFramework.zip ze strony wydań i rozpakuj go. Wynikowa zawartość folderu nie jest specyficzna dla platformy, a nie zawiera XCframeworks dla każdego modułu. Można je zintegrować w taki sam sposób jak zwykłe struktury, jak opisano poniżej.

  1. Pobierz struktury zestawu SDK centrum aplikacji udostępnione jako plik zip.

  2. Rozpakuj plik i zobaczysz folder o nazwie AppCenter-SDK-Apple/iOS zawierający różne struktury dla każdej usługi App Center. Struktura o nazwie AppCenter jest wymagana w projekcie, ponieważ zawiera kod współużytkowany między różnymi modułami.

  3. [Opcjonalnie] Utwórz podkatalog dla bibliotek innych firm.

    • Najlepszym rozwiązaniem jest to, że biblioteki innych firm są zwykle wewnątrz podkatalogu, często nazywanego dostawcą. Jeśli projekt nie jest zorganizowany przy użyciu podkatalogu dla bibliotek, utwórz teraz podkatalog Vendor .
    • Utwórz grupę o nazwie Vendor wewnątrz projektu Xcode, aby naśladować strukturę plików na dysku.
  4. Otwórz program Finder i skopiuj rozpakowany folder AppCenter-SDK-Apple/iOS do folderu projektu w lokalizacji, w której chcesz.

  5. Dodaj strukturę ZESTAWU SDK do projektu w środowisku Xcode:

    • Upewnij się, że nawigator projektu jest widoczny ((*)+1).
    • Teraz przeciągnij i upuść plik AppCenter.framework, AppCenterDistribute.framework i AppCenterDistributeResources.bundle z narzędzia Finder (tych w folderze Vendor ) do narzędzia Project Navigator programu Xcode. Do uruchomienia zestawu SDK jest wymagany program AppCenter.framework. Upewnij się, że został dodany do projektu. W przeciwnym razie inne moduły nie będą działać, a projekt nie zostanie pomyślnie skompilowany.
    • Zostanie wyświetlone okno dialogowe, upewnij się, że element docelowy aplikacji jest zaznaczony. Następnie kliknij przycisk Zakończ.

2. Uruchamianie dystrybucji centrum aplikacji

Usługa App Center używa tylko określonych modułów wywoływanych w aplikacji. Podczas uruchamiania zestawu SDK należy jawnie wywołać każdą z nich.

2.1. Dodawanie importu dla dystrybucji centrum aplikacji

Otwórz plik AppDelegate.m projektu w pliku Objective-C lub AppDelegate.swift w języku Swift i dodaj następujące instrukcje importowania:

@import AppCenter;
@import AppCenterDistribute;
import AppCenter
import AppCenterDistribute

2.2. Dodawanie start:withServices: metody

Dodaj Distribute element do metody start:withServices: , aby uruchomić usługę rozproszoną w Centrum aplikacji.

Wstaw następujący wiersz, aby uruchomić zestaw SDK w klasie AppDelegate.m projektu dla języka Objective-C lub AppDelegate.swift dla języka Swift w metodzie didFinishLaunchingWithOptions .

[MSACAppCenter start:@"{Your App Secret}" withServices:@[[MSACDistribute class]]];
AppCenter.start(withAppSecret: "{Your App Secret}", services: [Distribute.self])

Upewnij się, że w powyższym przykładzie kodu zastąpiono {Your App Secret} wpisem tajnym aplikacji. Zapoznaj się również z sekcją Wprowadzenie , jeśli nie skonfigurowano zestawu SDK w aplikacji.

2.3 Modyfikowanie pliku Info.plist projektu

  1. W pliku Info.plist projektu dodaj nowy klucz, URL types klikając przycisk "+" obok pozycji "Lista właściwości informacji" u góry. Jeśli kod Xcode wyświetla plik Info.plist jako kod źródłowy, zapoznaj się z poradą poniżej.
  2. Zmień typ klucza na Tablica.
  3. Dodaj nowy wpis do tablicy (Item 0) i zmień typ na Słownik.
  4. W obszarze Item 0dodaj URL Schemes klucz i zmień typ na Array.
  5. W obszarze klucza URL Schemes dodaj nowy wpis (Item 0).
  6. W obszarze URL Schemes>Item 0zmień wartość na appcenter-{APP_SECRET} i zastąp ciąg {APP_SECRET} kluczem tajnym aplikacji.

Porada

Jeśli chcesz sprawdzić, czy plik Info.plist został zmodyfikowany poprawnie, otwórz go jako kod źródłowy. Powinien on zawierać następujący wpis z wpisem tajnym aplikacji zamiast {APP_SECRET}:

<key>CFBundleURLTypes</key>
<array>
  <dict>
  	<key>CFBundleURLSchemes</key>
  	<array>
  		<string>appcenter-{APP_SECRET}</string>
  	</array>
  </dict>
</array>

Korzystanie z prywatnej grupy dystrybucyjnej

Domyślnie usługa Distribute używa publicznej grupy dystrybucyjnej. Jeśli chcesz użyć prywatnej grupy dystrybucyjnej, musisz jawnie ustawić ją za pomocą updateTrack właściwości .

MSACDistribute.updateTrack = MSACUpdateTrackPrivate;
Distribute.updateTrack = .private

Uwaga

Wartość domyślna to UpdateTrack.public. Tę właściwość można zaktualizować tylko przed wywołaniem AppCenter.start metody. Zmiany w ścieżce aktualizacji nie są utrwalane po ponownym uruchomieniu procesu aplikacji, dlatego jeśli właściwość nie jest zawsze aktualizowana przed AppCenter.start wywołaniem, będzie domyślnie publiczna.

Po wywołaniu zostanie otwarte okno przeglądarki w celu uwierzytelnienia użytkownika. Wszystkie kolejne testy aktualizacji otrzymają najnowszą wersję na prywatnej ścieżce.

Jeśli użytkownik znajduje się na ścieżce prywatnej, oznacza to, że po pomyślnym uwierzytelnieniu uzyska najnowszą wersję z dowolnych prywatnych grup dystrybucyjnych, do których należy. Jeśli użytkownik znajduje się na ścieżce publicznej, oznacza to, że otrzyma najnowszą wersję z dowolnej publicznej grupy dystrybucyjnej.

Wyłączanie automatycznego sprawdzania aktualizacji

Domyślnie zestaw SDK automatycznie sprawdza nowe wersje:

  • Po uruchomieniu aplikacji.
  • Gdy aplikacja przejdzie do tła, na pierwszym planie ponownie.
  • Po włączeniu modułu Distribute (Dystrybucja), jeśli został wcześniej wyłączony.

Jeśli chcesz ręcznie sprawdzić dostępność nowych wersji, możesz wyłączyć automatyczne sprawdzanie aktualizacji. Aby to zrobić, wywołaj następującą metodę przed uruchomieniem zestawu SDK:

[MSACDistribute disableAutomaticCheckForUpdate];
Distribute.disableAutomaticCheckForUpdate()

Uwaga

Ta metoda musi być wywoływana przed wywołaniem AppCenter.start metody.

Następnie możesz użyć interfejsu checkForUpdate API opisanego w poniższej sekcji.

Ręczne sprawdzanie aktualizacji

[MSACDistribute checkForUpdate];
Distribute.checkForUpdate()

Spowoduje to wysłanie żądania do Centrum aplikacji i wyświetlenie okna dialogowego aktualizacji w przypadku, gdy jest dostępna nowa wersja.

Uwaga

Ręczne sprawdzanie wywołania aktualizacji działa nawet wtedy, gdy są włączone aktualizacje automatyczne. Ręczne sprawdzanie aktualizacji jest ignorowane, jeśli jest już wykonywane inne sprawdzanie. Ręczne sprawdzanie aktualizacji nie zostanie przetworzone, jeśli użytkownik odroczył aktualizacje (chyba że najnowsza wersja jest obowiązkową aktualizacją).

Dostosowywanie lub lokalizowanie okna dialogowego aktualizacji w aplikacji

1. Dostosowywanie lub lokalizowanie tekstu

Możesz łatwo podać własne ciągi zasobów, jeśli chcesz lokalizować tekst wyświetlany w oknie dialogowym aktualizacji. Przyjrzyj się temu plikowi ciągów. Użyj tej samej nazwy/klucza ciągu i określ zlokalizowaną wartość, która ma zostać odzwierciedlona w oknie dialogowym we własnych plikach ciągów aplikacji.

2. Dostosowywanie okna dialogowego aktualizacji

Wygląd domyślnego okna dialogowego aktualizacji można dostosować, implementując DistributeDelegate protokół. Przed uruchomieniem zestawu SDK należy zarejestrować delegata, jak pokazano w poniższym przykładzie:

[MSACDistribute setDelegate:self];
Distribute.delegate = self;

Oto przykład implementacji delegata, która zastępuje okno dialogowe zestawu SDK niestandardowym:

- (BOOL)distribute:(MSACDistribute *)distribute releaseAvailableWithDetails:(MSACReleaseDetails *)details {

  // Your code to present your UI to the user, e.g. an UIAlertController.
  UIAlertController *alertController = [UIAlertController
      alertControllerWithTitle:@"Update available."
                       message:@"Do you want to update?"
                preferredStyle:UIAlertControllerStyleAlert];

  [alertController
      addAction:[UIAlertAction actionWithTitle:@"Update"
                                         style:UIAlertActionStyleCancel
                                       handler:^(UIAlertAction *action) {
                                         [MSACDistribute notifyUpdateAction:MSACUpdateActionUpdate];
                                       }]];

  [alertController
      addAction:[UIAlertAction actionWithTitle:@"Postpone"
                                         style:UIAlertActionStyleDefault
                                       handler:^(UIAlertAction *action) {
                                         [MSACDistribute notifyUpdateAction:MSACUpdateActionPostpone];
                                       }]];

  // Show the alert controller.
  [self.window.rootViewController presentViewController:alertController animated:YES completion:nil];
  return YES;
}
func distribute(_ distribute: Distribute, releaseAvailableWith details: ReleaseDetails) -> Bool {

  // Your code to present your UI to the user, e.g. an UIAlertController.
  let alertController = UIAlertController(title: "Update available.",
                                        message: "Do you want to update?",
                                 preferredStyle:.alert)

  alertController.addAction(UIAlertAction(title: "Update", style: .cancel) {_ in
    Distribute.notify(.update)
  })

  alertController.addAction(UIAlertAction(title: "Postpone", style: .default) {_ in
    Distribute.notify(.postpone)
  })

  // Show the alert controller.
  self.window?.rootViewController?.present(alertController, animated: true)
  return true;
}

W przypadku powrotu YES/true w powyższej metodzie aplikacja powinna uzyskać wybór użytkownika i wysłać komunikat do zestawu SDK z wynikiem przy użyciu następującego interfejsu API.

// Depending on the user's choice, call notifyUpdateAction: with the right value.
[MSACDistribute notifyUpdateAction:MSACUpdateActionUpdate];
[MSACDistribute notifyUpdateAction:MSACUpdateActionPostpone];
// Depending on the user's choice, call notify() with the right value.
Distribute.notify(.update);
Distribute.notify(.postpone);

Jeśli nie wywołasz powyższej metody, metoda -będzie powtarzana za każdym razem, releaseAvailableWithDetails:gdy aplikacja wchodzi na pierwszy plan.

3. Wykonaj kod, jeśli nie znaleziono aktualizacji

W przypadkach, gdy zestaw SDK sprawdza dostępność aktualizacji i nie znajdzie żadnych dostępnych aktualizacji nowszych niż aktualnie używany, distributeNoReleaseAvailable: wywoływana jest funkcja wywołania zwrotnego od MSACDistributeDelegate delegata. Umożliwia to wykonywanie kodu niestandardowego w takich scenariuszach.

Poniżej przedstawiono przykłady pokazujące sposób wyświetlania interfejsu użytkownika alertu po znalezieniu aktualizacji:

- (void)distributeNoReleaseAvailable:(MSACDistribute *)distribute {
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil
                                                                 message:NSLocalizedString(@"No updates available", nil)
                                                          preferredStyle:UIAlertControllerStyleAlert];
  [alert addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil) style:UIAlertActionStyleDefault handler:nil]];
  [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
}
  func distributeNoReleaseAvailable(_ distribute: Distribute) {
    let alert = UIAlertController(title: nil, message: "No updates available", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
    self.window?.rootViewController?.present(alert, animated: true)
  }

Włączanie lub wyłączanie dystrybucji usługi App Center w czasie wykonywania

Możesz włączyć i wyłączyć usługę App Center Distribute w czasie wykonywania. Jeśli ją wyłączysz, zestaw SDK nie udostępni żadnych funkcji aktualizacji w aplikacji, ale nadal możesz użyć usługi rozproszonej w portalu Centrum aplikacji.

[MSACDistribute setEnabled:NO];
Distribute.enabled = false

Aby ponownie włączyć usługę App Center Distribute, użyj tego samego interfejsu API, ale przekaż YES/true go jako parametr.

[MSACDistribute setEnabled:YES];
Distribute.enabled = true

Stan jest utrwalany w magazynie urządzenia w ramach uruchamiania aplikacji.

Uwaga

Ta metoda musi być używana tylko po Distribute rozpoczęciu.

Sprawdź, czy usługa App Center Distribute jest włączona

Możesz również sprawdzić, czy usługa App Center Distribute jest włączona, czy nie:

BOOL enabled = [MSACDistribute isEnabled];
var enabled = Distribute.enabled

Uwaga

Ta metoda musi być używana tylko po Distribute rozpoczęciu. Będzie ona zawsze zwracana false przed rozpoczęciem.

Nie inicjuj dystrybucji centrum aplikacji podczas opracowywania

Jeśli w trybie prywatnym usługa App Center Distribute otworzy swój interfejs użytkownika/przeglądarkę podczas uruchamiania aplikacji. Chociaż jest to oczekiwane zachowanie dla użytkowników końcowych, może to być destrukcyjne dla Ciebie podczas etapu programowania aplikacji. Nie zalecamy inicjowania DistributeDEBUG konfiguracji.

#if DEBUG
    [MSACAppCenter start:@"{Your App Secret}" withServices:@[[MSACAnalytics class], [MSACCrashes class]]];
#else
    [MSACAppCenter start:@"{Your App Secret}" withServices:@[[MSACAnalytics class], [MSACCrashes class], [MSACDistribute class]]];
#endif
#if DEBUG
    AppCenter.start(withAppSecret: "{Your App Secret}", services: [Analytics.self, Crashes.self])
#else
    AppCenter.start(withAppSecret: "{Your App Secret}", services: [Analytics.self, Crashes.self, Distribute.self])
#endif

Wykonaj czyszczenie bezpośrednio przed zamknięciem aplikacji na potrzeby aktualizacji

Zaimplementuj DistributeDelegate protokół i zarejestruj delegata, jak pokazano w poniższym przykładzie:

[MSACDistribute setDelegate:self];
Distribute.delegate = self;

Metoda distributeWillExitApp: delegata zostanie wywołana bezpośrednio przed zakończeniem działania aplikacji w przypadku instalacji aktualizacji:

- (void)distributeWillExitApp:(MSACDistribute *)distribute {
  // Perform the required clean up here.
}
func distributeWillExitApp(_ distribute: Distribute) {
  // Perform the required clean up here.
}

Jak działają aktualizacje w aplikacji?

Uwaga

Aby aktualizacje w aplikacji działały, kompilacja aplikacji powinna zostać pobrana z linku. Nie będzie działać, jeśli zainstalowano je z poziomu środowiska IDE lub ręcznie.

Funkcja aktualizacji w aplikacji działa w następujący sposób:

  1. Ta funkcja będzie działać tylko z kompilacjami, które są dystrybuowane przy użyciu usługi rozproszonej App Center . Nie będzie działać po dołączeniu debugera lub włączeniu funkcji dostępu z przewodnikiem dla systemu iOS.

  2. Po zintegrowaniu zestawu SDK skompiluj wersję wydania aplikacji i przekaż ją do Centrum aplikacji, użytkownicy w tej grupie dystrybucyjnej zostaną powiadomieni o nowej wersji za pośrednictwem wiadomości e-mail.

  3. Gdy każdy użytkownik otworzy link w wiadomości e-mail, aplikacja zostanie zainstalowana na swoim urządzeniu. Ważne jest, aby instalować aplikację za pomocą linku poczty e-mail — usługa App Center Distribute nie obsługuje aktualizacji w aplikacji dla aplikacji zainstalowanych z innych źródeł (np. pobierania aplikacji z załącznika wiadomości e-mail). Po pobraniu aplikacji z linku zestaw SDK zapisuje ważne informacje z plików cookie, aby sprawdzić dostępność aktualizacji później, w przeciwnym razie zestaw SDK nie ma tych kluczowych informacji.

  4. Jeśli aplikacja ustawi ścieżkę na prywatną, przeglądarka otworzy się w celu uwierzytelnienia użytkownika i włączenia aktualizacji w aplikacji. Przeglądarka nie zostanie ponownie otwarta, o ile informacje o uwierzytelnieniu pozostają prawidłowe nawet podczas przełączania z powrotem do publicznej ścieżki i z powrotem do prywatnej ponownie później. Jeśli uwierzytelnianie w przeglądarce zakończy się pomyślnie, użytkownik zostanie automatycznie przekierowany z powrotem do aplikacji. Jeśli śledzenie jest publiczne (co jest wartością domyślną), następny krok odbywa się bezpośrednio.

    • W systemie iOS 9 i 10 wystąpienie SFSafariViewController zostanie otwarte w aplikacji w celu uwierzytelnienia użytkownika. Zostanie ona zamknięta automatycznie po pomyślnych pomyślnych uwierzytelnieniach.
    • W systemie iOS 11 środowisko użytkownika jest podobne do systemu iOS 9 i 10, ale system iOS 11 poprosi użytkownika o pozwolenie na dostęp do informacji logowania. Jest to okno dialogowe na poziomie systemu i nie można go dostosować. Jeśli użytkownik anuluje okno dialogowe, może nadal używać testowej wersji, ale nie będzie uzyskiwać aktualizacji w aplikacji. Po następnym uruchomieniu aplikacji zostanie wyświetlony monit o uzyskanie dostępu do informacji logowania.
  5. W nowej wersji aplikacji jest wyświetlane okno dialogowe aktualizacji w aplikacji z prośbą użytkowników o zaktualizowanie aplikacji, jeśli jest to:

    • wyższa wartość CFBundleShortVersionString lub
    • równa wartość, CFBundleShortVersionString ale wyższa wartość .CFBundleVersion
    • wersje są takie same, ale unikatowy identyfikator kompilacji jest inny.

Porada

Jeśli przekażesz ten sam adres IPa po raz drugi, okno dialogowe NIE będzie wyświetlane, ponieważ pliki binarne są identyczne. Jeśli przekażesz nową kompilację z tymi samymi właściwościami wersji, zostanie wyświetlone okno dialogowe aktualizacji. Przyczyną tego jest to, że jest to inny plik binarny.

Jak mogę testowanie aktualizacji w aplikacji?

Musisz przekazać kompilacje wydania (które używają modułu Dystrybucji zestawu SDK centrum aplikacji) do portalu Centrum aplikacji w celu testowania aktualizacji w aplikacji, zwiększając liczbę wersji za każdym razem.

  1. Utwórz aplikację w portalu Centrum aplikacji, jeśli jeszcze tego nie zrobiono.
  2. Utwórz nową grupę dystrybucyjną i nadaj jej nazwę, aby można było ją rozpoznać do testowania funkcji aktualizacji w aplikacji.
  3. Dodaj siebie (lub wszystkie osoby, które chcesz dołączyć do testu funkcji aktualizacji w aplikacji). Użyj nowego lub odrzuconego adresu e-mail, który nie był używany dla tej aplikacji w centrum aplikacji. Dzięki temu twoje środowisko jest bliskie doświadczeniu prawdziwych testerów.
  4. Utwórz nową kompilację aplikacji, która obejmuje dystrybucję usługi App Center i zawiera logikę konfiguracji, zgodnie z poniższym opisem. Jeśli grupa jest prywatna, nie zapomnij ustawić prywatnej ścieżki aktualizacji w aplikacji przed rozpoczęciem korzystania z właściwości updateTrack.
  5. Kliknij przycisk Rozłóż nową wersję w portalu i przekaż kompilację aplikacji.
  6. Po zakończeniu przekazywania kliknij przycisk Dalej i wybierz grupę dystrybucyjną utworzoną jako docelową dystrybucji aplikacji.
  7. Przejrzyj sekcję Dystrybucja i rozpowszechnij kompilację w grupie testowania w aplikacji.
  8. Osoby w tej grupie otrzyma zaproszenie do bycia testerami aplikacji. Po zaakceptowaniu zaproszenia mogą pobrać aplikację z portalu Centrum aplikacji z urządzenia przenośnego. Po zainstalowaniu aktualizacji w aplikacji możesz przystąpić do testowania aktualizacji w aplikacji.
  9. Wprowadź nazwę wersji (CFBundleShortVersionString) aplikacji.
  10. Skompiluj wersję wydania aplikacji i przekaż nową kompilację aplikacji, tak jak w poprzednim kroku, i rozłóż ją do utworzonej wcześniej grupy dystrybucyjnej . Członkowie grupy dystrybucyjnej będą monitowani o nową wersję przy następnym uruchomieniu aplikacji.

Porada

Zapoznaj się z informacjami na temat sposobu korzystania z usługi App Center Distribute , aby uzyskać bardziej szczegółowe informacje na temat grup dystrybucyjnych itp. Chociaż można używać usługi App Center Distribute do rozpowszechniania nowej wersji aplikacji bez dodawania kodu, dodanie usługi App Center Distribute do kodu aplikacji spowoduje bardziej bezproblemowe środowisko dla testerów i użytkowników w miarę uzyskiwania środowiska aktualizacji w aplikacji.

Wyłączanie przekazywania metod delegata aplikacji do usług App Center

Zestaw SDK centrum aplikacji używawizzlingu, aby poprawić jego integrację przez przekazanie niektórych wywołań delegata aplikacji. Metoda swizzling to sposób zmiany implementacji metod w czasie wykonywania. Jeśli z jakiegokolwiek powodu nie chcesz używać swizzling (np. z powodu określonych zasad), możesz wyłączyć przekazywanie dla wszystkich usług App Center, wykonując poniższe kroki:

  1. Otwórz plik Info.plist projektu.
  2. Dodaj AppCenterAppDelegateForwarderEnabled klucz i ustaw wartość na 0. Spowoduje to wyłączenie przekazywania delegatów aplikacji dla wszystkich usług App Center.
  3. Dodaj wywołanie openURL zwrotne w pliku projektu AppDelegate .
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

  // Pass the url to MSACDistribute.
  return [MSACDistribute openURL:url];
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

  // Pass the URL to App Center Distribute.
  return Distribute.open(url)
}