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:
- Jeśli aplikacja została wydana w App Store, aktualizacje w aplikacji zostaną wyłączone.
- 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.
Postępuj zgodnie z sekcją Wprowadzenie , jeśli zestaw SDK nie został skonfigurowany w aplikacji.
Zestaw SDK centrum aplikacji został zaprojektowany z modułowym podejściem — wystarczy zintegrować tylko moduły usług, które cię interesują.
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'
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
Uruchom polecenie
carthage update
.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.
Przeciągnij i upuść pakiet AppCenterDistributeResources.bundle z witryny AppCenterDistribute.framework do narzędzia Project Navigator programu XCode.
Zostanie wyświetlone okno dialogowe, upewnij się, że element docelowy aplikacji jest zaznaczony. Następnie kliknij przycisk Zakończ.
- W menu programu Xcode kliknij pozycję File Swift Packages > Add Package Dependency (Dodaj > zależność pakietu).
- W wyświetlonym oknie dialogowym wprowadź adres URL repozytorium:
https://github.com/microsoft/appcenter-sdk-apple.git
. - W obszarze Wersja wybierz pozycję Do następnego majora i wybierz opcję domyślną.
- Wybierz pozycję AppCenterDistribute w kolumnie Package Product (Produkt pakietu ).
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.
Pobierz struktury zestawu SDK centrum aplikacji udostępnione jako plik zip.
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.[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.
Otwórz program Finder i skopiuj rozpakowany folder AppCenter-SDK-Apple/iOS do folderu projektu w lokalizacji, w której chcesz.
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.
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.
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
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.
- 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. - Zmień typ klucza na Tablica.
- Dodaj nowy wpis do tablicy (
Item 0
) i zmień typ na Słownik. - W obszarze
Item 0
dodajURL Schemes
klucz i zmień typ na Array. - W obszarze klucza
URL Schemes
dodaj nowy wpis (Item 0
). - W obszarze
URL Schemes
>Item 0
zmień wartość naappcenter-{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>
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.
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.
[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ą).
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.
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.
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)
}
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.
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.
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 Distribute
DEBUG
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
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.
}
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:
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.
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.
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.
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.
- W systemie iOS 9 i 10 wystąpienie
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.
- wyższa wartość
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.
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.
- Utwórz aplikację w portalu Centrum aplikacji, jeśli jeszcze tego nie zrobiono.
- Utwórz nową grupę dystrybucyjną i nadaj jej nazwę, aby można było ją rozpoznać do testowania funkcji aktualizacji w aplikacji.
- 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.
- 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.
- Kliknij przycisk Rozłóż nową wersję w portalu i przekaż kompilację aplikacji.
- Po zakończeniu przekazywania kliknij przycisk Dalej i wybierz grupę dystrybucyjną utworzoną jako docelową dystrybucji aplikacji.
- Przejrzyj sekcję Dystrybucja i rozpowszechnij kompilację w grupie testowania w aplikacji.
- 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.
- Wprowadź nazwę wersji (
CFBundleShortVersionString
) aplikacji. - 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.
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:
- Otwórz plik Info.plist projektu.
- Dodaj
AppCenterAppDelegateForwarderEnabled
klucz i ustaw wartość na0
. Spowoduje to wyłączenie przekazywania delegatów aplikacji dla wszystkich usług App Center. - Dodaj wywołanie
openURL
zwrotne w pliku projektuAppDelegate
.
- (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)
}