Udostępnij za pośrednictwem


Dystrybucja w App Center – aktualizacje wewnątrz aplikacji dla systemu iOS

Ważne

Program Visual Studio App Center został wycofany 31 marca 2025 r. z wyjątkiem funkcji analizy i diagnostyki, które będą nadal obsługiwane do 30 czerwca 2026 r. Dowiedz się więcej.

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, aby pobrać lub odroczyć nową wersję. Po wybraniu aktualizacji zestaw SDK zacznie aktualizować aplikację.

Uwaga / Notatka

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

  1. Jeśli aplikacja została wydana w sklepie App Store, aktualizacje w aplikacji zostaną wyłączone.
  2. Jeśli uruchamiasz zautomatyzowane testy interfejsu użytkownika, włączone aktualizacje w aplikacji zablokują automatyczne testy interfejsu użytkownika, ponieważ będą one próbowały uwierzytelnić się w zapleczu Centrum aplikacji. Zalecamy, aby nie włączać usługi App Center Distribute dla docelowego testu interfejsu użytkownika.

Uwaga / Notatka

W wersji 4.0.0 App Center wprowadzono zmiany powodujące niezgodność. 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.

Dodaj aktualizacje wewnątrz aplikacji

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

1. Dodaj moduł dystrybucji App Center

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

Integracja za pośrednictwem platformy Cocoapods

Jeśli integrujesz aplikację 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ę aplikacji za pomocą App Center Distribute.

    # 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 program 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ść AppCenterDistributeResources.bundle z struktury AppCenterDistribute.framework do nawigatora projektu XCode.

  5. Zostanie wyświetlone okno dialogowe, upewnij się, że docelowa aplikacja jest zaznaczona. Następnie kliknij przycisk Zakończ.

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

  1. Z menu Xcode kliknij pozycję File > Swift Packages > 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 kolejnej wersji głównej, a następnie opcję domyślną.
  4. Wybierz pozycję AppCenterDistribute w kolumnie Produkt pakietowy.

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 poniższe kroki:

Uwaga / Notatka

Zestaw SDK usługi App Center obsługuje korzystanie z programu XCframework. Jeśli chcesz zintegrować element XCframeworks z projektem, pobierz AppCenter-SDK-Apple-XCFramework.zip ze strony wydania i rozpakuj go. Wynikowa zawartość folderu nie jest specyficzna dla platformy, a zamiast tego zawiera element XCframeworks dla każdego modułu. Można je zintegrować w taki sam sposób, jak w przypadku zwykłych struktur, 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.

    • Najlepszą praktyką jest to, że biblioteki innych firm zwykle znajdują się w podkatalogu, często nazywanym Vendor. 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 nawigatora projektu 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 docelowa aplikacja jest zaznaczona. Następnie kliknij przycisk Zakończ.

2. Rozpocznij dystrybucję przez App Center

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 do metody start:withServices:, aby uruchomić usługę dystrybucji App Center.

Wstaw następujący wiersz, aby uruchomić zestaw SDK w klasie projektu AppDelegate.m dla Objective-C lub w klasie AppDelegate.swift dla 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} sekretem aplikacji. Zapoznaj się również z sekcją Wprowadzenie , jeśli zestaw SDK nie został skonfigurowany 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 program Xcode wyświetli plik Info.plist jako kod źródłowy, zapoznaj się z poniższą poradą.
  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. Pod kluczem URL Schemes dodaj nowy wpis (Item 0).
  6. Pod URL Schemes>Item 0, zmień wartość na appcenter-{APP_SECRET} i zastąp {APP_SECRET} kluczem tajnym aplikacji.

Wskazówka

Jeśli chcesz sprawdzić, czy zmodyfikowano plik Info.plist 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 / Notatka

Wartość domyślna to UpdateTrack.public. Tę właściwość można zaktualizować tylko przed wywołaniem AppCenter.start metody. Zmiany ścieżki 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 ona domyślnie publiczna.

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

Jeśli użytkownik znajduje się na ścieżce prywatnej, oznacza to, że po pomyślnym uwierzytelnieniu otrzymają 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 uzyska 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 w tło, a następnie ponownie na pierwszy plan.
  • Włączenie modułu Distribute, jeśli był wcześniej wyłączony.

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

[MSACDistribute disableAutomaticCheckForUpdate];
Distribute.disableAutomaticCheckForUpdate()

Uwaga / Notatka

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 pod kątem aktualizacji

[MSACDistribute checkForUpdate];
Distribute.checkForUpdate()

Spowoduje to wysłanie żądania do Centrum aplikacji i wyświetlenie okna dialogowego aktualizacji na wypadek dostępności nowej wersji.

Uwaga / Notatka

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ęczna kontrola aktualizacji nie zostanie przetworzona, 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 zlokalizować tekst wyświetlany w oknie dialogowym aktualizacji. Przyjrzyj się temu plikowi ciągów. Użyj tej samej nazwy lub klucza ciągu i określ zlokalizowaną wartość, która będzie widoczna w oknie dialogowym w plikach ciągów Twojej aplikacji.

2. Dostosowywanie okna dialogowego aktualizacji

Domyślny wygląd okna dialogowego aktualizacji można dostosować, implementując DistributeDelegate protokół. Musisz zarejestrować pełnomocnika przed uruchomieniem zestawu SDK, 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, gdy w powyższej metodzie zwrócisz YES/true, aplikacja powinna uzyskać wybór użytkownika i wysłać komunikat do zestawu SDK z wynikiem, używając 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 releaseAvailableWithDetails: będzie powtarzana za każdym razem, 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 znajduje żadnych nowszych dostępnych niż aktualnie używana, jest wywoływana funkcja zwrotna delegata MSACDistributeDelegate. Umożliwia to wykonywanie niestandardowego kodu w takich scenariuszach.

Poniżej przedstawiono przykłady pokazujące sposób wyświetlania interfejsu użytkownika alertu w przypadku braku znalezionych 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 funkcji App Center Distribute w czasie wykonywania

Możesz włączyć i wyłączyć dystrybucję usługi App Center w czasie działania aplikacji. Jeśli wyłączysz zestaw SDK, nie udostępni żadnych funkcji aktualizacji w aplikacji, ale nadal możesz korzystać z usługi Distribute w portalu App Center.

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

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

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

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

Uwaga / Notatka

Ta metoda musi być używana tylko po uruchomieniu Distribute.

Sprawdzanie, 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 / Notatka

Ta metoda musi być używana tylko po uruchomieniu Distribute. Zawsze zwróci false przed rozpoczęciem.

Nie inicjuj App Center Distribute podczas rozwoju

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

#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 na potrzeby 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 / Notatka

Aby aktualizacje w aplikacji działały, należy pobrać kompilację aplikacji z linku. Nie będzie działać, jeśli zainstalowano je ze ś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 App Center Distribute. Nie będzie działać, gdy debuger jest dołączony lub gdy funkcja Dostępu Prowadzonego systemu iOS jest włączona.

  2. Po zintegrowaniu zestawu SDK utwórz wersję wydania aplikacji i przekaż ją do Centrum aplikacji, użytkownicy w tej grupie dystrybucyjnej będą powiadamiani o nowej wersji za pośrednictwem poczty 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 w celu późniejszego sprawdzania dostępności aktualizacji. W przeciwnym razie zestaw SDK nie zawiera tych kluczowych informacji.

  4. Jeśli aplikacja ustawia ścieżkę na prywatną, przeglądarka otworzy się w celu uwierzytelnienia użytkownika i włączenia aktualizacji w aplikacji. Przeglądarka nie będzie ponownie otwierana, o ile informacje o uwierzytelnieniu pozostają prawidłowe, nawet gdy przełączasz się z powrotem na kanał publiczny, a następnie ponownie na kanał prywatny. Jeśli uwierzytelnianie przeglądarki zakończy się pomyślnie, użytkownik zostanie automatycznie przekierowany z powrotem do aplikacji. Jeśli utwór jest publiczny (co jest ustawieniem domyślnym), następny krok odbywa się bezpośrednio.

    • W systemach iOS 9 i 10, instancja SFSafariViewController zostanie otwarta w aplikacji, aby uwierzytelnić użytkownika. Zostanie ona zamknięta automatycznie po pomyślnych uwierzytelnieniach.
    • W systemie iOS 11 środowisko użytkownika jest podobne do systemów 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 uzyska 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 w następujących przypadkach:

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

Wskazówka

Jeśli prześlesz ten sam plik IPA po raz drugi, okno dialogowe NIE pojawi się, 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 przetestować aktualizacje w aplikacji?

Należy przekazać wersje produkcyjne, które używają modułu Distribute Zestawu SDK Centrum Aplikacji, do portalu Centrum Aplikacji w celu testowania aktualizacji aplikacji, zwiększając numer 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 doświadczenie jest bliskie doświadczeniu rzeczywistych 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 Dystrybuuj nową wersję w portalu i przekaż kompilację aplikacji.
  6. Po zakończeniu przekazywania kliknij Dalej i wybierz Grupę dystrybucyjną, którą utworzyłeś jako Miejsce docelowe dystrybucji aplikacji.
  7. Przejrzyj dystrybucję i przekaż kompilację do grupy testowej w aplikacji.
  8. Osoby w tej grupie otrzymają zaproszenie do testerów 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. Zaktualizuj nazwę wersji (CFBundleShortVersionString) aplikacji.
  10. Skompiluj wersję wydania swojej aplikacji, przekaż nową kompilację aplikacji, podobnie jak w poprzednim kroku, a następnie rozpowszechnij ją w grupie dystrybucyjnej, którą wcześniej utworzyłeś. Członkowie grupy dystrybucyjnej będą monitowani o nową wersję przy następnym uruchomieniu aplikacji.

Wskazówka

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żyć usługi App Center Distribute do dystrybucji nowej wersji aplikacji bez dodawania jakiegokolwiek 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łącz przekazywanie wywołań metod delegata aplikacji do usług App Center

SDK App Center używa swizzlingu, aby poprawić integrację, przekazując sobie niektóre z wywołań metod delegata aplikacji. Modyfikowanie metody to sposób zmiany implementacji metod w czasie wykonywania programu. Jeśli z jakiegokolwiek powodu nie chcesz używać wizzlingu (np. z powodu określonej polityki), możesz wyłączyć tę funkcję we wszystkich usługach App Center, wykonując poniższe kroki:

  1. Otwórz plik Info.plist projektu.
  2. Dodaj AppCenterAppDelegateForwarderEnabled klucz i ustaw wartość na 0. Czynność wyłącza przekazywanie delegata aplikacji dla wszystkich usług App Center.
  3. Dodaj wywołanie openURL 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)
}