Freigeben über


App Center Verteilen – Unity 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

App Center Distribution ermöglicht Es Ihren Benutzern/Testern, neue Versionen einer App zu installieren, sobald Sie sie über Das App Center verteilen. Nach der Aktivierung stellt das SDK Benutzern ein Updatedialogfeld vor, um entweder die Installation des neuesten Updates herunterzuladen oder zu verschieben. Nachdem sie sich für die Aktualisierung entschieden haben, beginnt das SDK mit dem Aktualisieren Ihrer Anwendung.

Von Bedeutung

Das Verteilungs-SDK für Unity unterstützt UWP nicht. Die Anweisungen auf dieser Seite decken nur Android und iOS ab.

Warnung

Google Play betrachtet den In-App-Updatecode als böswilliges Verhalten, auch wenn er zur Laufzeit nicht verwendet wird. Entfernen Sie diesen Code wie in diesem Abschnitt beschrieben, bevor Sie Ihre App an Google Play übermitteln. Fehler beim Entfernen des In-App-Updatecodes können zu Nichtkompatibilität und Entfernung der App aus Google Play führen.

Hinweis

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, In-App-Updates für Ihre UI-Tests zu deaktivieren.

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

Hinzufügen des App Center-Moduls "Verteilen"

Das App Center SDK ist mit einem modularen Ansatz konzipiert – ein Entwickler muss nur die Module der Dienste integrieren, an denen sie interessiert sind.

Folgen Sie der Unity-Einstiegsdokumentation, falls Sie das SDK in Ihrer Anwendung noch nicht eingerichtet und gestartet haben. Achten Sie darauf, das App Center-Verteilungspaket zu importieren. Der Name sollte das Format AppCenterDistribute-v{version}.unitypackage haben.

Hinweis

Android 10 oder höher hat Einschränkungen für die Startaktivität aus dem Hintergrund. Weitere Informationen zu Einschränkungen beim Starten von Aktivitäten aus dem Hintergrund finden Sie im Artikel.

Hinweis

Apps, die unter Android 10 (Go Edition) ausgeführt werden, können die SYSTEM_ALERT_WINDOW Berechtigung nicht erhalten. Weitere Informationen zu SYSTEM_ALERT_WINDOW auf Go-Geräten finden Sie im Artikel.

Hinweis

Ab Android 11 führen ACTION_MANAGE_OVERLAY_PERMISSION Intents den Benutzer immer zum Startbildschirm der Einstellungen, wo der Benutzer die SYSTEM_ALERT_WINDOW Berechtigungen für Apps erteilen oder widerrufen kann. Bitte lesen Sie den Artikel über Berechtigungsupdates in Android 11.

Entfernen von In-App-Updates für Google Play-Builds

Google Play betrachtet den In-App-Updatecode als böswilliges Verhalten, auch wenn er zur Laufzeit nicht verwendet wird. Entfernen Sie diesen Code, bevor Sie Ihre App an Google Play übermitteln. Fehler beim Entfernen des In-App-Updatecodes können zu Nichtkompatibilität und Entfernung der App aus Google Play führen. Um nativen Code für In-App-Updates zu entfernen, deaktivieren Sie das Kontrollkästchen „Verteilen verwenden“ im Abschnitt „Verteilen“ des Spielobjekts mit angefügtem AppCenterBehavior.

Private Verteilergruppe verwenden

Standardmäßig verwendet Verteilen eine öffentliche Verteilergruppe. Wenn Sie eine private Verteilergruppe verwenden möchten, müssen Sie zu "Privat" wechseln UpdateTrack . Wählen Sie Privat im Dropdownmenü "Update Track" im Abschnitt "Verteilen" beim Spielobjekt mit angefügtem AppCenterBehavior aus.

Bei Verwendung des privaten Titels 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.

Deaktivieren Sie hierzu das Kontrollkästchen " Automatische Überprüfung auf Aktualisierung " im Abschnitt " Verteilen " des Spielobjekts mit angefügtem AppCenterBehavior .

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

Manuelles Überprüfen auf Update

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 eigene Ressourcenzeichenfolgen angeben, wenn Sie den im Aktualisierungsdialogfeld angezeigten Text lokalisieren möchten. Sehen Sie sich die Zeichenfolgendateien für iOS in dieser iOS-Ressourcendatei und für Android in dieser Android-Ressourcendatei an. Verwenden Sie denselben Zeichenfolgennamen/Schlüssel, und geben Sie den lokalisierten Wert an, der im Dialogfeld in Ihren eigenen App-Ressourcendateien widergespiegelt werden soll.

2. Anpassen des Aktualisierungsdialogfelds

Sie können die Darstellung des Standardmäßigen Aktualisierungsdialogfelds anpassen, indem Sie den ReleaseAvailable Rückruf implementieren.

Warnung

Sie müssen den Rückruf in der Awake Methode einer MonoBehaviour in der ersten Szene registrieren, die Ihre Anwendung lädt, um zu vermeiden, dass Aufrufe des Releaserückrufs verloren gehen.

// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;

Hier ist eine Rückrufimplementierung, die das SDK-Dialogfeld durch benutzerdefinierte Logik 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;

    // (Do something with the values if you want)

    // On mandatory update, user can't postpone
    if (releaseDetails.MandatoryUpdate)
    {
        // Force user to update (you should probably show some custom UI here)
        Distribute.NotifyUpdateAction(UpdateAction.Update);
    }
    else
    {
        // Allow user to update or postpone (you should probably show some custom UI here)
        // "GetUserUpdateAction()" isn't part of the SDK; it just represents a way of getting user response.
        // This blocks the thread while awaiting the user's response! This example shouldn't be used literally
        UpdateAction updateAction = GetUserUpdateAction();
        Distribute.NotifyUpdateAction(updateAction);
    }
    // Return true if you're using your own UI to get user response, false otherwise
    return true;
}

Implementierungshinweise für Android:

Wie im Beispiel gezeigt, müssen Sie entweder Distribute.NotifyUpdateAction(UpdateAction.UPDATE); oder Distribute.NotifyUpdateAction(UpdateAction.POSTPONE); aufrufen, wenn Ihr Rückruf true zurückgibt.

Wenn Sie NotifyUpdateAction nicht aufrufen, wird das Callback bei jeder Aktivitätsänderung wiederholt.

Der Rückruf kann erneut mit derselben Version 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 in den Hintergrund verschoben (wie durch Drücken von Home) und dann in einer anderen Aktivität wieder aufgenommen.
  • Ihre Aktivität wird von einem anderen abgedeckt, ohne die Anwendung zu verlassen (z. B. durch Klicken auf einige Benachrichtigungen).
  • Ähnliche Szenarien wie oben.

In diesem Fall kann die Aktivität, die das Dialogfeld hostet, ohne Benutzerinteraktion ersetzt werden. Daher ruft das SDK den Listener erneut auf, damit Sie das benutzerdefinierte Dialogfeld wiederherstellen können.

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 NoReleaseAvailable Rückruf aufgerufen. Auf diese Weise können Sie benutzerdefinierten Code in solchen Szenarien ausführen. Sie müssen die Callback-Funktion registrieren, bevor Sie AppCenter.Start aufrufen, 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.");
}

## Enable or disable App Center Distribute at runtime

You can enable and disable App Center Distribute at runtime. If you disable it, the SDK won't provide any in-app update functionality but you can still use the Distribute service in the App Center portal.

To disable the Distribute service, use the following code:

```csharp
Distribute.SetEnabledAsync(false);

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

Distribute.SetEnabledAsync(true);

Diese API ist asynchron. Weitere Informationen finden Sie im Leitfaden zu asynchronen APIs im App Center .

Sie müssen diesen Aufruf nicht warten, um andere API-Aufrufe (z IsEnabledAsync. B. ) konsistent zu machen.

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

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

Sie können auch überprüfen, ob App Center-Verteilung aktiviert ist:

Distribute.IsEnabledAsync();

Diese API ist asynchron. Weitere Informationen finden Sie im Leitfaden zu asynchronen APIs im App Center .

Aktivieren von In-App-Updates für Debugbuilds

Standardmäßig sind In-App-Updates nur für Releasebuilds aktiviert.

Um In-App-Updates für Debug-Builds unter Android und iOS zu aktivieren, aktivieren Sie das Kontrollkästchen "In Debug verteilen" im Abschnitt "Verteilen" des Spielobjekts mit angefügtem AppCenterBehavior.

App Center-Verhalten

In Unity ist ein debugbarer Build ein Build mit aktivierter Entwicklungsbuildoption .

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

Hinweis

Dieser Rückruf funktioniert nur unter 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
}

Daraufhin wird OnWillExitApp() aufgerufen, wenn "Verteilen" geschlossen werden soll.

Funktionsweise von 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 RELEASE-Builds (standardmäßig), die über den App Center Distribute-Dienst verteilt werden. Es funktioniert nicht, wenn das iOS-Feature für geführten Zugriff aktiviert ist.
  2. Nachdem Sie das SDK integriert haben, erstellen Sie eine Releaseversion Ihrer App, und laden Sie es in App Center hoch. Benutzer in der Verteilergruppe werden 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 verwenden . Wir unterstützen das Querladen nicht. 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.
  5. Eine neue Version der App zeigt das Dialogfeld zur In-App-Aktualisierung an, in dem Benutzer aufgefordert werden, ihre Anwendung zu aktualisieren, wenn bestimmte Bedingungen erfüllt sind.
    • Ios:
      • 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.
    • Android:
      • ein höherer Wert von versionCode oder
      • ein gleicher Wert von versionCode , aber ein anderer Wert von versionName.

Tipp

Wenn Sie dasselbe .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 denselben 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.

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 geben Sie ihm einen Namen.
  3. Fügen Sie sich selbst hinzu (oder alle Personen, die Sie zum Testen des In-App-Updates hinzufügen möchten). Verwenden Sie für diesen Schritt eine neue oder weggeworfene E-Mail-Adresse, die noch nicht mit dieser App 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 die UpdateTrack Eigenschaft verwenden.
  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 zuvor 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 die Version Ihrer App (CFBundleShortVersionString oder CFBundleVersion für iOS, versionCode für Android) auf.
  10. Erstellen Sie die Freigabeversion Ihrer App und laden Sie einen neuen Build hoch, wie im vorherigen Schritt. Verteilen 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 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.