Freigeben über


App Center Verteilen – iOS-In-App-Updates

Von Bedeutung

Visual Studio App Center wurde am 31. März 2025 eingestellt, mit Ausnahme der Analyse- und Diagnosefeatures, die bis zum 30. Juni 2026 weiterhin unterstützt werden. Weitere Informationen

Mit App Center Distribute können Ihre Benutzer eine neue Version der App installieren, wenn Sie sie über Das App Center verteilen. Wenn eine neue Version der App verfügbar ist, zeigt das SDK den Benutzern ein Updatedialogfeld an, um die neue Version herunterzuladen oder zu verschieben. Nachdem sie sich für die Aktualisierung entschieden haben, beginnt das SDK mit dem Aktualisieren Ihrer Anwendung.

Hinweis

Bei der Verwendung von In-App-Updates sind einige Dinge zu berücksichtigen:

  1. Wenn Sie Ihre App im App Store veröffentlicht haben, werden In-App-Updates deaktiviert.
  2. Wenn Sie automatisierte UI-Tests ausführen, blockieren aktivierte In-App-Updates Ihre automatisierten UI-Tests, da sie versuchen, sich beim App Center-Back-End zu authentifizieren. Es wird empfohlen, app Center Verteilen für Ihr UI-Testziel nicht zu aktivieren.

Hinweis

In der 4.0.0 Version des App Center wurden bahnbrechende Änderungen eingeführt. Folgen Sie dem Abschnitt "Migrieren zu App Center SDK 4.0.0" und höher , um App Center aus früheren Versionen zu migrieren.

Von Bedeutung

Das App Center SDK unterstützt nicht mehrere Fenster-Apps, die in iOS 13 eingeführt wurden.

Hinzufügen von In-App-Updates zu Ihrer App

Folgen Sie dem Abschnitt " Erste Schritte ", wenn Sie das SDK in Ihrer Anwendung nicht konfiguriert haben.

1. Hinzufügen des App Center-Moduls "Verteilen"

Das App Center SDK ist mit einem modularen Ansatz konzipiert – Sie müssen nur die Module der Dienste integrieren, an denen Sie interessiert sind.

Integration über Cocoapods

Wenn Sie App Center über Cocoapods in Ihre App integrieren, fügen Sie die folgende Abhängigkeit zu Ihrer Podfile hinzu und führen Sie pod install aus.

pod 'AppCenter/Distribute'

Integration über Karthage

  1. Fügen Sie die folgende Abhängigkeit zu Ihrer Cartfile hinzu, um App Center Distribute hinzuzufügen.

    # 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. Führen Sie carthage update aus.

  3. Öffnen Sie die Registerkarte " Allgemeine Einstellungen" des Anwendungsziels. Ziehen Sie die Datei "AppCenterDistribute.framework " aus dem Ordner "Carthage/Build/iOS " in den Abschnitt "Linked Frameworks and Libraries " in XCode.

  4. Ziehen Sie appCenterDistributeResources.bundle aus AppCenterDistribute.framework in den Project Navigator von XCode.

  5. Es wird ein Dialogfeld angezeigt. Stellen Sie sicher, dass Ihr App-Ziel überprüft ist. Klicken Sie auf Fertig stellen.

Integration über Swift Package Manager

  1. Klicken Sie im Menü „Xcode“ auf „Datei > Swift-Pakete > Paketabhängigkeit hinzufügen“.
  2. Geben Sie im daraufhin angezeigten Dialogfeld die Repository-URL ein: https://github.com/microsoft/appcenter-sdk-apple.git.
  3. Wählen Sie in Version die Option Bis zur nächsten Hauptversion aus und nehmen Sie die Standardoption.
  4. Wählen Sie in der Spalte "Paketprodukt" die AppCenterDistribute aus.

Integration durch Kopieren der Binärdateien in Ihr Projekt

Wenn Sie Cocoapods nicht verwenden möchten, können Sie die Module integrieren, indem Sie die Binärdateien in Ihr Projekt kopieren. Führen Sie dafür die folgenden Schritte aus:

Hinweis

App Center SDK unterstützt die Verwendung von XCframework. Wenn Sie XCframeworks in Ihr Projekt integrieren möchten, laden Sie die AppCenter-SDK-Apple-XCFramework.zip von der Veröffentlichungsseite herunter, und entpacken Sie es. Resultierende Ordnerinhalte sind nicht plattformspezifisch, sondern enthält XCframeworks für jedes Modul. Sie können auf die gleiche Weise wie übliche Frameworks integriert werden, wie unten beschrieben.

  1. Laden Sie die App Center SDK-Frameworks herunter, die als ZIP-Datei bereitgestellt werden.

  2. Entpacken Sie die Datei, und Sie sehen einen Ordner namens "AppCenter-SDK-Apple/iOS ", der unterschiedliche Frameworks für jeden App Center-Dienst enthält. Das aufgerufene AppCenter Framework ist im Projekt erforderlich, da es Code enthält, der zwischen den verschiedenen Modulen gemeinsam verwendet wird.

  3. [Optional] Erstellen Sie ein Unterverzeichnis für Drittanbieterbibliotheken.

    • Als bewährte Methode befinden sich Drittanbieterbibliotheken in der Regel innerhalb eines Unterverzeichnisses, häufig als "Vendor" bezeichnet. Wenn Ihr Projekt nicht mit einem Unterverzeichnis für Bibliotheken organisiert ist, erstellen Sie jetzt ein Lieferantenunterverzeichnis .
    • Erstellen Sie eine Gruppe namens "Vendor " innerhalb Ihres Xcode-Projekts, um die Dateistruktur auf dem Datenträger nachzuahmen.
  4. Öffnen Sie Finder, und kopieren Sie den entzippten AppCenter-SDK-Apple/iOS-Ordner in den Ordner Ihres Projekts an der gewünschten Position.

  5. Fügen Sie das SDK-Framework dem Projekt in Xcode hinzu:

    • Stellen Sie sicher, dass der Project Navigator sichtbar ist (⌘+1).
    • Ziehen Sie jetzt AppCenter.framework, AppCenterDistribute.framework und AppCenterDistributeResources.bundle aus dem Finder (die im Ordner "Vendor ") in den Project Navigator von Xcode. AppCenter.framework ist erforderlich, um das SDK zu starten. Stellen Sie sicher, dass es zu Ihrem Projekt hinzugefügt wird, andernfalls funktionieren die anderen Module nicht, und Ihr Projekt wird nicht erfolgreich kompiliert.
    • Es wird ein Dialogfeld angezeigt. Stellen Sie sicher, dass Ihr App-Ziel überprüft ist. Klicken Sie auf Fertig stellen.

2. App Center Distribute starten

App Center verwendet nur die spezifischen Module, die Sie in Ihrer Anwendung aufrufen. Sie müssen jede dieser Elemente explizit aufrufen, wenn Sie das SDK starten.

2.1 Hinzufügen des Imports für App Center Distribute

Öffnen Sie die Datei "AppDelegate.m " des Projekts in Objective-C- oder AppDelegate.swift-Datei in Swift, und fügen Sie die folgenden Importanweisungen hinzu:

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

2.2 Hinzufügen der start:withServices: Methode

Fügen Sie Distribute Ihrer start:withServices: Methode hinzu, um den App Center-Verteilungsdienst zu starten.

Fügen Sie die folgende Zeile ein, um das SDK in der AppDelegate.m-Klasse des Projekts für Objective-C oder AppDelegate.swift-Klasse für Swift in der didFinishLaunchingWithOptions Methode zu starten.

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

Stellen Sie sicher, dass Sie im obigen Codebeispiel durch Ihren App-Geheimschlüssel ersetzt {Your App Secret} haben. Sehen Sie sich auch den Abschnitt " Erste Schritte " an, wenn Sie das SDK in Ihrer Anwendung nicht konfiguriert haben.

2.3 Ändern der Info.plist des Projekts

  1. Fügen Sie in der Datei "Info.plist " des Projekts einen neuen Schlüssel URL types hinzu, indem Sie oben auf die Schaltfläche "+" neben "Informationseigenschaftsliste" klicken. Wenn Xcode Ihre Info.plist als Quellcode anzeigt, lesen Sie den folgenden Tipp.
  2. Ändern Sie den Schlüsseltyp in "Array".
  3. Fügen Sie dem Array (Item 0) einen neuen Eintrag hinzu, und ändern Sie den Typ in "Wörterbuch".
  4. Fügen Sie unter Item 0" einen URL Schemes Schlüssel hinzu, und ändern Sie den Typ in "Array".
  5. Fügen Sie unter Ihrem URL Schemes Schlüssel einen neuen Eintrag (Item 0) hinzu.
  6. Ändern Sie unter URL Schemes>Item 0 den Wert in appcenter-{APP_SECRET} und ersetzen Sie {APP_SECRET} durch das App-Secret Ihrer App.

Tipp

Wenn Sie überprüfen möchten, ob Sie die Info.plist richtig geändert haben, öffnen Sie sie als Quellcode. Er muss den folgenden Eintrag mit Ihrem App Secret anstelle von {APP_SECRET} enthalten:

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

Private Verteilergruppe verwenden

Standardmäßig verwendet Verteilen eine öffentliche Verteilergruppe. Wenn Sie eine private Verteilergruppe verwenden möchten, müssen Sie sie explizit über updateTrack festlegen.

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

Hinweis

Der Standardwert ist UpdateTrack.public. Diese Eigenschaft kann nur vor dem AppCenter.start Methodenaufruf aktualisiert werden. Änderungen an der Aktualisierungsspur werden nicht beibehalten, wenn der Anwendungsprozess neu gestartet wird. Wenn die Eigenschaft also nicht immer vor dem AppCenter.start Aufruf aktualisiert wird, ist sie standardmäßig öffentlich.

Nach diesem Aufruf wird ein Browserfenster geöffnet, um den Benutzer zu authentifizieren. Alle nachfolgenden Updateprüfungen erhalten die neueste Version auf dem privaten Track.

Wenn sich ein Benutzer auf der privaten Spur befindet, bedeutet dies, dass er nach der erfolgreichen Authentifizierung die neueste Version von allen privaten Verteilergruppen erhält, in denen er Mitglied ist. Wenn sich ein Benutzer auf der öffentlichen Spur befindet, bedeutet dies, dass er die neueste Version einer beliebigen öffentlichen Verteilergruppe erhält.

Automatische Überprüfung auf Update deaktivieren

Standardmäßig sucht das SDK automatisch nach neuen Versionen:

  • Wenn die Anwendung gestartet wird.
  • Wenn die Anwendung in den Hintergrund wechselt und dann wieder in den Vordergrund zurückkehrt.
  • Wenn Sie das Modul "Verteilen" aktivieren, wenn das Modul zuvor deaktiviert wurde.

Wenn Sie manuell nach neuen Versionen suchen möchten, können Sie die automatische Überprüfung auf Updates deaktivieren. Rufen Sie dazu vor dem SDK-Start die folgende Methode auf:

[MSACDistribute disableAutomaticCheckForUpdate];
Distribute.disableAutomaticCheckForUpdate()

Hinweis

Diese Methode muss vor dem AppCenter.start Methodenaufruf aufgerufen werden.

Anschließend können Sie die checkForUpdate API verwenden, die im folgenden Abschnitt beschrieben wird.

Manuelles Überprüfen auf Update

[MSACDistribute checkForUpdate];
Distribute.checkForUpdate()

Dadurch wird eine Anforderung an das App Center gesendet und ein Updatedialogfeld angezeigt, falls eine neue Version verfügbar ist.

Hinweis

Eine manuelle Überprüfung auf Updateanrufe funktioniert auch dann, wenn automatische Updates aktiviert sind. Eine manuelle Überprüfung auf Aktualisierung wird ignoriert, wenn bereits eine andere Überprüfung durchgeführt wird. Die manuelle Überprüfung auf Das Update wird nicht verarbeitet, wenn der Benutzer Updates verschoben hat (es sei denn, die neueste Version ist ein obligatorisches Update).

Anpassen oder Lokalisieren des In-App-Aktualisierungsdialogfelds

1. Anpassen oder Lokalisieren von Text

Sie können ganz einfach eigene Ressourcenzeichenfolgen bereitstellen, wenn Sie den im Aktualisierungsdialogfeld angezeigten Text lokalisieren möchten. Sehen Sie sich diese Zeichenfolgendatei an. Verwenden Sie denselben Zeichenfolgennamen/Schlüssel, und geben Sie den lokalisierten Wert an, der im Dialogfeld in Ihren eigenen App-Zeichenfolgendateien widerzuspiegeln ist.

2. Anpassen des Aktualisierungsdialogfelds

Sie können die Darstellung des Standardaktualisierungsdialogfelds anpassen, indem Sie das DistributeDelegate Protokoll implementieren. Sie müssen den Delegaten registrieren, bevor Sie das SDK starten, wie im folgenden Beispiel gezeigt:

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

Hier ist ein Beispiel für die Delegatenimplementierung, die das SDK-Dialogfeld durch ein benutzerdefiniertes ersetzt:

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

Falls Sie in der obigen Methode zurückkehren YES/true , sollte Ihre App die Auswahl des Benutzers abrufen und das SDK mit dem Ergebnis mithilfe der folgenden API melden.

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

Wenn Sie die oben genannte Methode nicht aufrufen, wird die releaseAvailableWithDetails:--Methode immer wiederholt, wenn Ihre App in den Vordergrund wechselt.

3. Ausführen von Code, wenn keine Updates gefunden werden

In Fällen, in dem das SDK nach Updates sucht und keine Updates findet, die neuer verfügbar sind als die aktuell verwendete, wird ein distributeNoReleaseAvailable: Rückruf von MSACDistributeDelegate Stellvertretungen aufgerufen. Auf diese Weise können Sie benutzerdefinierten Code in solchen Szenarien ausführen.

Im Folgenden finden Sie Beispiele, in denen gezeigt wird, wie die Benachrichtigungs-UI angezeigt wird, wenn keine Aktualisierungen gefunden werden:

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

Aktivieren oder Deaktivieren von App Center Distribute während der Ausführung

Sie können App Center Distribution während der Laufzeit aktivieren und deaktivieren. Wenn Sie es deaktivieren, stellt das SDK keine In-App-Updatefunktionen bereit, Sie können den Verteilungsdienst aber weiterhin im App Center-Portal verwenden.

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

Um App Center Distribute erneut zu aktivieren, verwenden Sie dieselbe API, übergeben YES/true sie aber als Parameter.

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

Der Zustand wird im Speicher des Geräts über Anwendungsstarts hinweg beibehalten.

Hinweis

Diese Methode darf nur verwendet werden, nachdem Distribute gestartet wurde.

Überprüfen, ob "App Center Verteilen" aktiviert ist

Sie können auch überprüfen, ob App Center Verteilen aktiviert ist oder nicht:

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

Hinweis

Diese Methode darf nur verwendet werden, nachdem Distribute gestartet wurde; vor dem Start wird aber immer false zurückgegeben.

App Center-Verteilung während der Entwicklung nicht initialisieren

Im privaten Modus öffnet App Center Distribute die Benutzeroberfläche/den Browser beim Starten der Anwendung. Obwohl dies ein erwartetes Verhalten für Ihre Endbenutzer ist, kann es für Sie während der Entwicklungsphase Ihrer Anwendung störend sein. Es wird nicht empfohlen, die Initialisierung für Ihre DEBUG Konfiguration zu initialisierenDistribute.

#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

Durchführen einer Bereinigung direkt vor dem Schließen der Anwendung für das Update

Implementieren Sie das Protokoll, und registrieren Sie den DistributeDelegate Delegaten wie im folgenden Beispiel gezeigt:

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

Die distributeWillExitApp: Delegatmethode wird direkt aufgerufen, bevor die App für die Updateinstallation beendet wird:

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

Wie funktionieren In-App-Updates?

Hinweis

Damit In-App-Updates funktionieren, sollte ein App-Build über den Link heruntergeladen werden. Sie funktioniert nicht, wenn sie über eine IDE oder manuell installiert wurde.

Das Feature für In-App-Updates funktioniert wie folgt:

  1. Dieses Feature funktioniert nur mit Builds, die mithilfe des App Center Distribute-Diensts verteilt werden. Es funktioniert nicht, wenn der Debugger angefügt ist oder das Feature für den iOS-geführten Zugriff aktiviert ist.

  2. Nachdem Sie das SDK integriert haben, erstellen Sie eine Releaseversion Ihrer App, und laden Sie sie in Das App Center hoch, werden Benutzer in dieser Verteilergruppe per E-Mail über die neue Version benachrichtigt.

  3. Wenn jeder Benutzer den Link in seiner E-Mail öffnet, wird die Anwendung auf ihrem Gerät installiert. Es ist wichtig, dass sie den E-Mail-Link zum Installieren der App verwenden – App Center Distribute unterstützt keine In-App-Updates für Apps, die aus anderen Quellen installiert wurden (z. B. Herunterladen der App aus einer E-Mail-Anlage). Wenn eine Anwendung über den Link heruntergeladen wird, speichert das SDK wichtige Informationen aus Cookies, um zu einem späteren Zeitpunkt nach Updates zu suchen, andernfalls verfügt das SDK nicht über diese wichtigen Informationen.

  4. Wenn die Anwendung den Titel auf "Privat" festlegt, wird ein Browser geöffnet, um den Benutzer zu authentifizieren und um In-App-Aktualisierungen zu ermöglichen. Der Browser wird nicht erneut geöffnet, solange die Authentifizierungsinformationen gültig bleiben, selbst wenn man wieder zum öffentlichen Track wechselt und später erneut privat geht. Wenn die Browserauthentifizierung erfolgreich ist, wird der Benutzer automatisch zurück zur Anwendung umgeleitet. Wenn die Spur öffentlich ist (dies ist die Standardeinstellung), erfolgt der nächste Schritt direkt.

    • Unter iOS 9 und 10 wird eine Instanz von SFSafariViewController innerhalb der App geöffnet, um den Benutzer zu authentifizieren. Sie wird automatisch geschlossen, nachdem die Authentifizierung erfolgreich war.
    • Unter iOS 11 ähnelt die Benutzeroberfläche iOS 9 und 10, aber iOS 11 fragt den Benutzer um Erlaubnis, auf Anmeldeinformationen zuzugreifen. Dies ist ein Dialogfeld auf Systemebene, das nicht angepasst werden kann. Wenn der Benutzer das Dialogfeld abbricht, kann er weiterhin die getestete Version verwenden, aber er erhält keine In-App-Updates. Sie werden aufgefordert, erneut auf Anmeldeinformationen zuzugreifen, wenn sie die App das nächste Mal starten.
  5. Eine neue Version der App zeigt das Dialogfeld "In-App-Aktualisierung" an, in dem Benutzer aufgefordert werden, Ihre App zu aktualisieren, wenn:

    • ein höherer Wert von CFBundleShortVersionString oder
    • ein gleicher Wert von CFBundleShortVersionString , aber ein höherer Wert von CFBundleVersion.
    • Die Versionen sind identisch, aber der eindeutige Buildbezeichner unterscheidet sich.

Tipp

Wenn Sie dieselbe IPA ein zweites Mal hochladen, wird das Dialogfeld NICHT angezeigt, da die Binärdateien identisch sind. Wenn Sie einen neuen Build mit denselben Versionseigenschaften hochladen, wird das Aktualisierungsdialogfeld angezeigt. Der Grund dafür ist, dass es sich um eine andere Binärdatei handelt.

Wie teste ich In-App-Updates?

Sie müssen Releasebuilds (die das Verteilungsmodul des App Center SDK verwenden) in das App Center-Portal hochladen, um In-App-Updates zu testen und die Versionsnummern jedes Mal zu erhöhen.

  1. Erstellen Sie Ihre App im App Center-Portal, sofern noch nicht geschehen.
  2. Erstellen Sie eine neue Verteilergruppe, und nennen Sie sie, damit Sie erkennen können, dass sie zum Testen des In-App-Updatefeatures vorgesehen ist.
  3. Fügen Sie sich selbst hinzu (oder alle Personen, die Sie zum Testen des In-App-Updates hinzufügen möchten). Verwenden Sie hierfür eine neue oder weggeworfene E-Mail-Adresse, die für diese App im App Center nicht verwendet wurde. Dadurch wird sichergestellt, dass Ihre Erfahrung den echten Testern nahe kommt.
  4. Erstellen Sie einen neuen Build Ihrer App, der App Center Distribute enthält und die die unten beschriebene Setuplogik enthält. Wenn die Gruppe privat ist, vergessen Sie nicht, den privaten in-app-Update-Track festzulegen, bevor Sie mit der Nutzung der updateTrack-Eigenschaft beginnen.
  5. Klicken Sie im Portal auf die Schaltfläche " Neue Version verteilen ", und laden Sie Ihren Build der App hoch.
  6. Nachdem der Upload abgeschlossen ist, klicken Sie auf "Weiter ", und wählen Sie die Verteilergruppe aus, die Sie als Ziel dieser App-Verteilung erstellt haben.
  7. Überprüfen Sie die Verteilung, und verteilen Sie den Build an Ihre In-App-Testgruppe.
  8. Personen in dieser Gruppe erhalten eine Einladung, Tester der App zu sein. Sobald sie die Einladung angenommen haben, können sie die App über das App Center-Portal von ihrem mobilen Gerät herunterladen. Nachdem sie In-App-Updates installiert haben, können Sie In-App-Updates testen.
  9. Heben Sie den Versionsnamen (CFBundleShortVersionString) Ihrer App auf.
  10. Erstellen Sie die Releaseversion Ihrer App, und laden Sie einen neuen Build Ihrer App wie im vorherigen Schritt hoch, und verteilen Sie dies an die zuvor erstellte Verteilergruppe . Mitglieder der Verteilergruppe werden beim nächsten Start der App zur Eingabe einer neuen Version aufgefordert.

Tipp

Sehen Sie sich die Informationen zur Nutzung von App Center Distribute an, um ausführlichere Informationen zu Verteilergruppen usw. zu erhalten. Obwohl es möglich ist, App Center Distribute zu verwenden, um eine neue Version Ihrer App zu verteilen, ohne Code hinzuzufügen, führt das Hinzufügen von App Center Distribute zum Code Ihrer App zu einer nahtloseren Oberfläche für Ihre Tester und Benutzer, wenn sie die In-App-Updateerfahrung erhalten.

Deaktivieren der Weiterleitung der Methodenaufrufe des Anwendungsdelegats an App Center-Dienste

Das App Center SDK verwendet swizzling, um die Integration zu verbessern, indem er selbst einige Methodenaufrufe des Anwendungsdelegats weiterleite. Das Methoden-Swizzling ist eine Möglichkeit, die Implementierung von Methoden zur Laufzeit zu ändern. Wenn Sie aus irgendeinem Grund keine Swizzling verwenden möchten (z. B. aufgrund einer bestimmten Richtlinie), können Sie diese Weiterleitung für alle App Center-Dienste deaktivieren, indem Sie die folgenden Schritte ausführen:

  1. Öffnen Sie die Datei "Info.plist " des Projekts.
  2. Fügen Sie AppCenterAppDelegateForwarderEnabled als Schlüssel hinzu und setzen Sie den Wert auf 0. Dadurch wird die Weiterleitung von Anwendungsdelegats für alle App Center-Dienste deaktiviert.
  3. Fügen Sie den openURL Rückruf in die Datei AppDelegate des Projekts hinzu.
- (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)
}