App Center Verteilen – iOS-In-App-Updates

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie eine Migration in Betracht ziehen können.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

App Center Distribute ermöglicht Es Ihren Benutzern, eine neue Version der App zu installieren, wenn Sie sie über 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. Sobald sie sich für ein Update entschieden haben, beginnt das SDK mit dem Aktualisieren Ihrer Anwendung.

Hinweis

Bei der Verwendung von In-App-Updates sind einige Punkte zu beachten:

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

Hinweis

In der 4.0.0 Version von App Center wurden breaking changes eingeführt. Befolgen Sie den Abschnitt Migrieren zum App Center SDK 4.0.0 und höher , um App Center von früheren Versionen zu migrieren.

Wichtig

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

Befolgen Sie den 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 ihrer Poddatei die folgende Abhängigkeit hinzu, und führen Sie aus pod install.

pod 'AppCenter/Distribute'

Integration über Carthage

  1. Fügen Sie ihrer die folgende Abhängigkeit hinzu Cartfile , um App Center Distribute einzuschließen.

    # 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. carthage update ausführen.

  3. Öffnen Sie die Registerkarte Allgemeine Einstellungen Ihres Anwendungsziels. Ziehen Sie die Datei AppCenterDistribute.framework aus dem Ordner Carthage/Build/iOS in den Abschnitt Verknüpfte Frameworks und Bibliotheken in XCode.

  4. Ziehen Sie AppCenterDistributeResources.bundle aus AppCenterDistribute.framework in den Projektnavigator von XCode.

  5. Es wird ein Dialogfeld angezeigt, in dem Sie sicherstellen, dass Ihr App-Ziel aktiviert ist. Klicken Sie auf Fertig stellen.

Integration über Swift-Paket-Manager

  1. Klicken Sie im Menü Xcode auf Datei > Swift-Pakete > Paketabhängigkeit hinzufügen.
  2. Geben Sie im angezeigten Dialogfeld die Repository-URL ein: https://github.com/microsoft/appcenter-sdk-apple.git.
  3. Wählen Sie unter Version die Option Up to Next Major (Nach oben) aus, und wählen Sie die Standardoption aus.
  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 diese Schritte aus:

Hinweis

Das 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 Releaseseite herunter, und entpacken Sie sie. Die resultierenden Ordnerinhalte sind nicht plattformspezifisch, sondern enthalten 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. Entzippen Sie die Datei, und Es wird ein Ordner namens AppCenter-SDK-Apple/iOS angezeigt, der verschiedene Frameworks für jeden App Center-Dienst enthält. Das Framework namens AppCenter ist im Projekt erforderlich, da es Code enthält, der von den verschiedenen Modulen gemeinsam genutzt wird.

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

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

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

    • Stellen Sie sicher, dass der Projektnavigator 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 Ihrem Projekt hinzugefügt wird. Andernfalls funktionieren die anderen Module nicht, und Ihr Projekt wird nicht erfolgreich kompiliert.
    • Es wird ein Dialogfeld angezeigt, in dem Sie sicherstellen, dass Ihr App-Ziel aktiviert ist. Klicken Sie auf Fertig stellen.

2. Starten der App Center-Verteilung

App Center verwendet nur die spezifischen Module, die Sie in Ihrer Anwendung aufrufen. Sie müssen sie beim Starten des SDK explizit aufrufen.

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 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 Ihr App-Geheimnis ersetzt {Your App Secret} haben. Lesen Sie auch den Abschnitt Erste Schritte , 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 für URL types hinzu, indem Sie oben neben "Information Property List" auf die Schaltfläche "+" 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 () einen neuen Eintrag hinzu,Item 0 und ändern Sie den Typ in Dictionary.
  4. Fügen Sie unter Item 0einen Schlüssel hinzu URL Schemes , 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 0den Wert in appcenter-{APP_SECRET} , und ersetzen Sie durch {APP_SECRET} das App-Geheimnis Ihrer App.

Tipp

Wenn Sie überprüfen möchten, ob Sie die Info.plist ordnungsgemäß geändert haben, öffnen Sie sie als Quellcode. Sie sollte den folgenden Eintrag mit Ihrem App-Geheimnis anstelle von {APP_SECRET}enthalten:

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

Verwenden einer privaten Verteilergruppe

Standardmäßig verwendet Distribute eine öffentliche Verteilergruppe. Wenn Sie eine private Verteilergruppe verwenden möchten, müssen Sie diese explizit über die updateTrack -Eigenschaft festlegen.

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

Hinweis

Standardwert: UpdateTrack.public. Diese Eigenschaft kann nur vor dem AppCenter.start Methodenaufruf aktualisiert werden. Änderungen an der Updatespur 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 Updateüberprüfungen erhalten die neueste Version auf der privaten Spur.

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

Deaktivieren der automatischen Überprüfung auf Updates

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

  • Wenn die Anwendung gestartet wird.
  • Wenn die Anwendung in den Hintergrund wechselt, dann wieder im Vordergrund.
  • Wenn Sie das Modul Verteilen aktivieren, wenn sie zuvor deaktiviert sind.

Wenn Sie manuell nach neuen Releases suchen möchten, können Sie die automatische Überprüfung auf Updates deaktivieren. Rufen Sie hierzu die folgende Methode auf, bevor Sie das SDK starten:

[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.

Manuelle Überprüfung auf Update

[MSACDistribute checkForUpdate];
Distribute.checkForUpdate()

Dadurch wird eine Anforderung an App Center gesendet und ein Updatedialogfeld angezeigt, falls ein neues Release verfügbar ist.

Hinweis

Eine manuelle Überprüfung auf Updateaufrufe 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 Updates 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-Updatedialogfelds

1. Anpassen oder Lokalisieren von Text

Sie können ganz einfach eigene Ressourcenzeichenfolgen bereitstellen, wenn Sie den im Dialogfeld "Aktualisieren" 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 widerspiegelt werden soll.

2. Anpassen des Aktualisierungsdialogfelds

Sie können die Darstellung des Standardupdatedialogfelds 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 sehen Sie 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 die obige Methode zurückgeben YES/true , sollte Ihre App die Auswahl des Benutzers abrufen und das SDK mit dem Ergebnis mithilfe der folgenden API per Nachricht senden.

// 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, wiederholt sich die releaseAvailableWithDetails:-Methode, wenn Ihre App in den Vordergrund eintritt.

3. Code ausführen, 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 Delegaten aufgerufen. Dadurch können Sie benutzerdefinierten Code in solchen Szenarien ausführen.

Hier finden Sie Beispiele, die zeigen, wie Sie die Warnungsoberfläche anzeigen, wenn keine Updates 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 zur Laufzeit

Sie können App Center Distribute zur Laufzeit aktivieren und deaktivieren. Wenn Sie es deaktivieren, stellt das SDK keine In-App-Updatefunktionen bereit, Sie können jedoch weiterhin den Verteilungsdienst 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 bei allen Anwendungsstarts beibehalten.

Hinweis

Diese Methode darf erst nach dem Distribute Start verwendet werden.

Überprüfen, ob App Center Distributed aktiviert ist

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

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

Hinweis

Diese Methode darf erst nach dem Distribute Start verwendet werden. Sie wird immer vor dem Start zurückgegeben false .

Initialisieren Sie App Center Distribute während der Entwicklung nicht.

Im privaten Modus öffnet App Center Distribute die Benutzeroberfläche/den Browser beim Anwendungsstart. Obwohl dies ein erwartetes Verhalten für Ihre Endbenutzer ist, kann dies während der Entwicklungsphase Ihrer Anwendung für Sie störend sein. Es wird nicht empfohlen, für Ihre Konfiguration zu DEBUG 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

Ausführen sauber direkt vor dem Schließen der Anwendung für das Update

Implementieren Sie das DistributeDelegate Protokoll, und registrieren Sie den 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. Es funktioniert nicht, wenn es über eine IDE oder manuell installiert wird.

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

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

  2. Nachdem Sie das SDK integriert haben, eine Releaseversion Ihrer App erstellen und sie in App Center hochladen, werden Die Benutzer in dieser Verteilergruppe per E-Mail über das neue Release benachrichtigt.

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

  4. Wenn die Anwendung die Spur auf privat festlegt, wird ein Browser geöffnet, um den Benutzer zu authentifizieren und In-App-Updates zu aktivieren. Der Browser wird nicht wieder geöffnet, solange die Authentifizierungsinformationen auch dann gültig bleiben, wenn sie wieder zur öffentlichen Spur und später wieder zurück zu privat wechseln. Wenn die Browserauthentifizierung erfolgreich ist, wird der Benutzer automatisch zurück zur Anwendung weitergeleitet. Wenn die Spur öffentlich ist (dies ist die Standardeinstellung), erfolgt der nächste Schritt direkt.

    • Unter iOS 9 und 10 wird ein instance von SFSafariViewController in der App geöffnet, um den Benutzer zu authentifizieren. Es schließt sich automatisch, nachdem die Authentifizierung erfolgreich war.
    • Unter iOS 11 ähnelt die Benutzeroberfläche iOS 9 und 10, aber iOS 11 fragt den Benutzer um seine Berechtigung für den Zugriff auf Anmeldeinformationen. 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 In-App-Updatedialogfeld an, in dem Benutzer aufgefordert werden, Ihre Anwendung zu aktualisieren, wenn es sich um folgendes handelt:

    • einen höheren 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 den gleichen Versionseigenschaften hochladen, wird das Updatedialogfeld angezeigt. Der Grund dafür ist, dass es sich um eine andere Binärdatei handelt.

Gewusst wie In-App-Updates testen?

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 Versionszahlen jedes Mal zu erhöhen.

  1. Erstellen Sie Ihre App im App Center-Portal, falls noch nicht geschehen.
  2. Erstellen Sie eine neue Verteilergruppe, und benennen 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 in Ihren Test des In-App-Updatefeatures einbeziehen möchten). Verwenden Sie hierfür eine neue E-Mail-Adresse oder eine E-Mail-Adresse, die nicht für diese App im App Center verwendet wurde. Dadurch wird sichergestellt, dass Ihre Erfahrung nahe an der Erfahrung Ihrer echten Tester liegt.
  4. Erstellen Sie einen neuen Build Ihrer App, der App Center Distributed enthält und die Setuplogik enthält, wie unten beschrieben. Wenn die Gruppe privat ist, vergessen Sie nicht, den privaten In-App-Updatetrack festzulegen, bevor Sie mit der updateTrack-Eigenschaft beginnen.
  5. Klicken Sie im Portal auf die Schaltfläche Neues Release verteilen , und laden Sie Ihren Build der App hoch.
  6. Klicken Sie nach Abschluss des Uploads 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 aus dem App Center-Portal von ihrem mobilen Gerät herunterladen. Sobald In-App-Updates installiert sind, können Sie In-App-Updates testen.
  9. Geben Sie den Versionsnamen (CFBundleShortVersionString) Ihrer App an.
  10. Erstellen Sie die Releaseversion Ihrer App, laden Sie wie im vorherigen Schritt einen neuen Build Ihrer App hoch, und verteilen Sie sie 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 Verwendung von App Center Distribute an, um ausführlichere Informationen zu Verteilergruppen usw. zu erhalten. Es ist zwar möglich, App Center Distribute zu verwenden, um eine neue Version Ihrer App zu verteilen, ohne Code hinzuzufügen, aber das Hinzufügen von App Center Distribute zum Code Ihrer App führt zu einer nahtloseren Benutzeroberfläche für Ihre Tester und Benutzer, wenn sie die In-App-Update-Erfahrung erhalten.

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

Das App Center SDK verwendet swizzling, um die Integration zu verbessern, indem einige Methodenaufrufe des Anwendungsdelegats weitergeleitet werden. Methodenschwizzling ist eine Möglichkeit, die Implementierung von Methoden zur Laufzeit zu ändern. Wenn Sie swizzling aus irgendeinem Grund nicht 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 den Schlüssel hinzu AppCenterAppDelegateForwarderEnabled , und legen Sie den Wert auf fest 0. Dadurch wird die Weiterleitung von Anwendungsdelegaten für alle App Center-Dienste deaktiviert.
  3. Fügen Sie den openURL Rückruf in der Datei des AppDelegate 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)
}