App Center Distributed – MAUI- und Xamarin-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 möglicherweise eine Migration in Erwägung ziehen.
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, stellt das SDK den Benutzern ein Updatedialogfeld bereit, um die neue Version herunterzuladen oder zu verschieben. Sobald sie sich für die Aktualisierung entschieden haben, beginnt das SDK mit der Aktualisierung Ihrer Anwendung.
Warnung
Google Play betrachtet den In-App-Updatecode als schädliches Verhalten, auch wenn er zur Laufzeit nicht verwendet wird. Verwenden Sie eine Variante des Distributed SDK, wie in diesem Abschnitt beschrieben, bevor Sie Ihre App an Google Play übermitteln. Wenn der In-App-Updatecode nicht entfernt wird, kann dies zur Nichteinhaltung und Entfernung der App aus Google Play führen.
Hinweis
Wenn Sie automatisierte Benutzeroberflächentests 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 Distribute nicht für Ihre Benutzeroberflächentests zu aktivieren.
Hinzufügen von In-App-Updates zu Ihrer App
Folgen Sie dem Abschnitt Erste Schritte , wenn Sie das SDK in Ihrer Anwendung noch nicht eingerichtet und gestartet haben.
1. Hinzufügen des App Center-Moduls "Verteilen"
Das App Center SDK ist mit einem modularen Ansatz konzipiert. Entwickler müssen nur die Module der Dienste integrieren, an denen sie interessiert sind.
Visual Studio für Mac
- Öffnen Sie Visual Studio für Mac.
- Klicken Sie auf Datei>öffnen , und wählen Sie Ihre Projektmappe aus.
- Klicken Sie im Projektmappennavigator mit der rechten Maustaste auf den Abschnitt Pakete , und wählen Sie NuGet-Pakete hinzufügen... aus.
- Suchen Sie nach App Center, und installieren Sie App Center Distribute.
- Klicken Sie auf Pakete hinzufügen.
Visual Studio für Windows
- Öffnen Sie Visual Studio für Windows.
- Klicken Sie auf Datei>öffnen , und wählen Sie Ihre Projektmappe aus.
- Klicken Sie im Lösungsnavigator mit der rechten Maustaste auf Verweise , und wählen Sie NuGet-Pakete verwalten aus.
- Suchen Sie nach App Center, und installieren Sie Microsoft.AppCenter.Distribute.
Paket-Manager-Konsole
- Öffnen Sie die Konsole in Visual Studio. Wählen Sie hierzu Extras>NuGet-Paket-Manager-Paket-Manager-Konsole>aus.
- Wenn Sie in Visual Studio für Mac arbeiten, stellen Sie sicher, dass Sie die NuGet-Paketverwaltungserweiterungen installiert haben. Wählen Sie hierzu VisualStudio-Erweiterungen> aus, suchen Sie nach NuGet, und installieren Sie sie bei Bedarf.
- Geben Sie den folgenden Befehl in die Konsole ein:
Install-Package Microsoft.AppCenter.Distribute
Hinweis
Wenn Sie das App Center SDK in einem portablen Projekt (z . B. Xamarin.Forms) verwenden, müssen Sie die Pakete in jedem der Projekte installieren: portable, Android und iOS. Dazu sollten Sie jedes Unterprojekt öffnen und die entsprechenden Schritte ausführen, die in Visual Studio für Mac- oder Visual Studio für Windows-Abschnitten beschrieben sind.
Hinweis
Android 10 oder höher hat Einschränkungen für die Startaktivität im Hintergrund. Weitere Informationen finden Sie im Artikel zu Einschränkungen beim Starten von Aktivitäten im Hintergrund.
Hinweis
Apps, die unter Android 10 (Go Edition) ausgeführt werden, können nicht die berechtigung SYSTEM_ALERT_WINDOW erhalten. Weitere Informationen finden Sie im Artikel SYSTEM_ALERT_WINDOW für Go-Geräte.
Hinweis
Ab Android 11 ACTION_MANAGE_OVERLAY_PERMISSION
bringen Absichten den Benutzer immer zum Bildschirm "Einstellungen auf oberster Ebene", wo der Benutzer die SYSTEM_ALERT_WINDOW
Berechtigungen für Apps erteilen oder widerrufen kann. Weitere Informationen finden Sie im Artikel zu Berechtigungsupdates in Android 11.
2. Starten von App Center Distribute
Konfigurieren Sie das App Center SDK, indem Sie AppCenter.Start(...)
aufrufen, wie im Leitfaden Erste Schritte beschrieben.
Öffnen Sie für Ihre iOS-Anwendung die AppDelegate.cs
, und fügen Sie die folgende Zeile vor dem Aufruf von hinzu LoadApplication
:
Distribute.DontCheckForUpdatesInDebug();
Dieser Schritt ist unter Android nicht erforderlich, wenn die Debugkonfiguration zur Laufzeit automatisch erkannt wird.
Um In-App-Updates für Debugbuilds unter Android zu aktivieren, rufen Sie die folgende Methode in der MainActivity.cs-Datei des Projekts, in der OnCreate
-Methode und vor LoadApplication
auf.
Distribute.SetEnabledForDebuggableBuild(true);
Hinweis
Diese Methode wirkt sich nur auf Debugbuilds aus und hat keine Auswirkungen auf Releasebuilds.
2.3 [nur für iOS] Ändern der Info.plist des Projekts
Das App Center SDK überprüft urls, die an die Anwendung umgeleitet werden, um das Querladen zu vermeiden. Damit Updates, die über das Portal verteilt werden, ordnungsgemäß verarbeitet werden, müssen Sie im CFBundleURLTypes
Abschnitt der Info.plist
Datei folgendes angebenCFBundleURLSchemes
:
Hinweis
Info.plist
oder eine Informationseigenschaftenlistendatei ist eine strukturierte Textdatei, die wichtige Konfigurationsinformationen für eine gebündelte ausführbare Datei enthält.
Weitere Informationen hierzu finden Sie in der Apple-Entwicklerdokumentation.
- Fügen Sie einen neuen Schlüssel für
URL types
oderCFBundleURLTypes
in Ihrer Info.plist-Datei hinzu (falls Xcode Ihre Info.plist als Quellcode anzeigt). - Ändern Sie den Schlüssel des ersten untergeordneten Elements in
URL Schemes
oderCFBundleURLSchemes
. - Geben Sie
appcenter-${APP_SECRET}
als URL-Schema ein, und ersetzen Sie${APP_SECRET}
durch 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. Es 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>
Entfernen von In-App-Updates für Google Play-Builds
Google Play betrachtet den In-App-Updatecode als schädliches Verhalten, auch wenn er zur Laufzeit nicht verwendet wird. Wenn der In-App-Updatecode nicht entfernt wird, kann dies zur Nichteinhaltung und Entfernung der App aus Google Play führen. Um dies zu vereinfachen, stellen wir die Version des App Center Distribute SDK mit stubbed-APIs bereit, sodass die einzige Änderung für Sie ein Abhängigkeitstausch ist.
Fügen Sie eine neue Buildkonfiguration mit dem Namen
GooglePlay
für Ihre Xamarin.Android - und freigegebenen Projekte hinzu. Stellen Sie sicher, dass die Buildkonfiguration des Projekts ordnungsgemäß der entsprechenden Projektmappenkonfiguration zugeordnet ist. Weitere Informationen finden Sie unter Visual Studio oder Visual Studio für Mac Anweisungen.Öffnen Sie Xamarin.Android und freigegebene Projekte'
.csproj
in einem beliebigen Text-Editor, und verschieben Sie den Verweis in die Gruppe der bedingten Elemente:<ItemGroup Condition=" '$(Configuration)' != 'GooglePlay' "> <PackageReference Include="Microsoft.AppCenter.Distribute" Version="3.3.0" /> </ItemGroup> <ItemGroup Condition=" '$(Configuration)' == 'GooglePlay' "> <PackageReference Include="Microsoft.AppCenter.DistributePlay" Version="3.3.0" /> </ItemGroup>
Hinweis
Wenn Sie ein altes packages.config-Format zum Verwalten von NuGet-Verweisen verwenden, können Sie zu einem PackageReference-Format migrieren, befolgen Sie die Migrationsanweisungen.
Speichern Sie Ihre Änderungen, und stellen Sie NuGet-Pakete wieder her.
Sie können die Konfiguration in der Befehlsleiste oben in der IDE ändern.
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.
Distribute.UpdateTrack = 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 Updateprüfungen erhalten die neueste Version auf der privaten Spur. Die Updateverfolgung wird nicht im SDK für app-übergreifende Starts beibehalten.
Wenn sich ein Benutzer im privaten Bereich befindet, bedeutet dies, dass er nach der erfolgreichen Authentifizierung die neueste Version von allen privaten Verteilergruppen erhält, denen er angehört. Wenn sich ein Benutzer auf dem öffentlichen Pfad befindet, bedeutet dies, dass er die neueste Version von jeder öffentlichen Verteilergruppe erhält.
Deaktivieren der automatischen Überprüfung auf Update
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:
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
Distribute.CheckForUpdate();
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 die Zeichenfolgendateien für iOS in dieser Ressourcendatei und die Zeichenfolgendateien für Android in dieser Ressourcendatei an. Verwenden Sie denselben Zeichenfolgennamen/-schlüssel, und geben Sie den lokalisierten Wert an, der im Dialogfeld in Ihren eigenen App-Ressourcendateien angezeigt werden soll.
2. Anpassen des Aktualisierungsdialogfelds
Sie können die Darstellung des Standardupdatedialogfelds anpassen, indem Sie den ReleaseAvailable
Rückruf implementieren. Sie müssen den Rückruf registrieren, bevor Sie aufrufen AppCenter.Start
, wie im folgenden Beispiel gezeigt:
// In this example OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;
AppCenter.Start(...);
Hier sehen Sie ein Beispiel für die Rückrufimplementierung, die das SDK-Dialogfeld durch ein benutzerdefiniertes ersetzt:
bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
// Look at releaseDetails public properties to get version information, release notes text or release notes URL
string versionName = releaseDetails.ShortVersion;
string versionCodeOrBuildNumber = releaseDetails.Version;
string releaseNotes = releaseDetails.ReleaseNotes;
Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;
// custom dialog
var title = "Version " + versionName + " available!";
Task answer;
// On mandatory update, user can't postpone
if (releaseDetails.MandatoryUpdate)
{
answer = Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install");
}
else
{
answer = Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install", "Maybe tomorrow...");
}
answer.ContinueWith((task) =>
{
// If mandatory or if answer was positive
if (releaseDetails.MandatoryUpdate || (task as Task<bool>).Result)
{
// Notify SDK that user selected update
Distribute.NotifyUpdateAction(UpdateAction.Update);
}
else
{
// Notify SDK that user selected postpone (for 1 day)
// This method call is ignored by the SDK if the update is mandatory
Distribute.NotifyUpdateAction(UpdateAction.Postpone);
}
});
// Return true if you're using your own dialog, false otherwise
return true;
}
Implementierungshinweise für Xamarin.Android:
Wie im Beispiel gezeigt, müssen Sie entweder aufrufen Distribute.NotifyUpdateAction(UpdateAction.UPDATE);
oder Distribute.NotifyUpdateAction(UpdateAction.POSTPONE);
, wenn Ihr Rückruf zurückgibt true
.
Wenn Sie nicht aufrufen NotifyUpdateAction
, wiederholt sich der Rückruf bei jeder Aktivitätsänderung.
Der Rückruf kann mit derselben Version erneut aufgerufen werden, wenn sich die Aktivität ändert, bevor die Benutzeraktion an das SDK benachrichtigt wird.
Dieses Verhalten ist erforderlich, um die folgenden Szenarien abzudecken:
- Ihre Anwendung wird an den Hintergrund gesendet (z. B. durch Drücken von HOME), und dann in einer anderen Aktivität fortgesetzt.
- Ihre Aktivität wird von einer anderen Aktivität abgedeckt, ohne die Anwendung zu verlassen (z. B. auf einige Benachrichtigungen klicken).
- Andere ähnliche Szenarien.
In diesem Fall kann die Aktivität, die das Dialogfeld hosten, ohne Benutzerinteraktion ersetzt werden. Daher ruft das SDK den Listener erneut auf, damit Sie das benutzerdefinierte Dialogfeld wiederherstellen können.
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 NoReleaseAvailable
Rückruf aufgerufen. Dadurch können Sie benutzerdefinierten Code in solchen Szenarien ausführen.
Sie müssen den Rückruf registrieren, bevor Sie aufrufen AppCenter.Start
, wie im folgenden Beispiel gezeigt:
// In this example OnNoReleaseAvailable is a method name in same class
Distribute.NoReleaseAvailable = OnNoReleaseAvailable;
AppCenter.Start(...);
void OnNoReleaseAvailable()
{
AppCenterLog.Info(LogTag, "No release available callback invoked.");
}
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.
Distribute.SetEnabledAsync(false);
Um App Center Distribute erneut zu aktivieren, verwenden Sie dieselbe API, übergeben true
sie aber als Parameter.
Distribute.SetEnabledAsync(true);
Sie müssen diesen Aufruf nicht abwarten, um andere API-Aufrufe (z IsEnabledAsync
. B. ) konsistent auszuführen.
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 = await Distribute.IsEnabledAsync();
Hinweis
Diese Methode darf erst nach dem Distribute
Start verwendet werden. Sie wird immer vor dem Start zurückgegeben false
.
Führen Sie sauber aus, bevor die App für das Update geschlossen wird (nur iOS)
Registrieren Sie den Rückruf, wie im folgenden Beispiel gezeigt:
// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
// Perform clean up here
}
Damit wird aufgerufen, OnWillExitApp()
wenn Distribute geschlossen wird.
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:
Dieses Feature funktioniert nur mit RELEASE-Builds (standardmäßig), die mithilfe des App Center-Verteilungsdiensts verteilt werden. Es funktioniert nicht, wenn das Feature für den geführten iOS-Zugriff aktiviert ist.
Nachdem Sie das SDK integriert haben, die Releaseversion Ihrer App erstellen und in App Center hochladen, werden die Benutzer in dieser Verteilergruppe per E-Mail über das neue Release benachrichtigt.
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 für die Installation verwenden. Das Querladen wird nicht unterstützt. 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.
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 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.
- Unter iOS 9 und 10 wird ein instance von
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:
iOS:
- einen höheren Wert von
CFBundleShortVersionString
oder - ein gleicher Wert von,
CFBundleShortVersionString
aber ein höherer Wert vonCFBundleVersion
. - Die Versionen sind identisch, aber der eindeutige Buildbezeichner unterscheidet sich.
- einen höheren Wert von
Android:
- einen höheren Wert von
versionCode
oder - ein gleicher Wert von,
versionCode
aber ein anderer Wert vonversionName
.
- einen höheren Wert von
Tipp
Wenn Sie dieselbe apk/ipa ein zweites Mal hochladen, wird das Dialogfeld NICHT angezeigt, da die Binärdateien identisch sind. Wenn Sie unter iOS 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. Unter Android gelten Binärdateien als identisch, wenn beide Versionseigenschaften identisch sind.
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.
- Erstellen Sie Ihre App im App Center-Portal, falls noch nicht geschehen.
- Erstellen Sie eine neue Verteilergruppe, und nennen Sie sie, damit Sie erkennen können, dass sie zum Testen des In-App-Updatefeatures vorgesehen ist.
- 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.
- 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, die private In-App-Updatespur festzulegen, bevor Sie mit der Verwendung der
UpdateTrack
-Eigenschaft beginnen. - Klicken Sie im Portal auf die Schaltfläche Neues Release verteilen , und laden Sie Ihren Build der App hoch.
- Klicken Sie nach Abschluss des Uploads auf Weiter , und wählen Sie die Verteilergruppe aus, die Sie als Ziel dieser App-Verteilung erstellt haben.
- Überprüfen Sie die Verteilung, und verteilen Sie den Build an Ihre In-App-Testgruppe.
- 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.
- Erhöhen der Version Ihrer App (
CFBundleShortVersionString
oderCFBundleVersion
für iOS fürversionCode
Android) - 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 automatischen Weiterleitung der Methoden des Anwendungsdelegats an App Center-Dienste
App Center verwendet swizzling, um die Methoden Ihres Anwendungsdelegats automatisch an App Center-Dienste weiterzuleiten, um die SDK-Integration zu verbessern. Es besteht die Möglichkeit von Konflikten mit anderen Drittanbieterbibliotheken oder der Anwendungsdelegierten selbst. In diesem Fall können Sie die App Center-Anwendungsdelegatweiterleitung für alle App Center-Dienste deaktivieren, indem Sie die folgenden Schritte ausführen:
- Öffnen Sie die Datei Info.plist des Projekts.
- Fügen Sie den Schlüssel hinzu
AppCenterAppDelegateForwarderEnabled
, und legen Sie den Wert auf fest0
. Dadurch wird die Weiterleitung von Anwendungsdelegaten für alle App Center-Dienste deaktiviert. - Fügen Sie
OpenUrl
ihrer Datei rückrufeAppDelegate.cs
hinzu.
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
Distribute.OpenUrl(url);
return true;
}