In diesem Leitfaden wird beschrieben, wie Sie In-App- Updates in Ihrer App mithilfe von Unity aktualisieren. Es gibt separate Leitfäden für Fälle, in denen die Kotlin-Programmierung verwendet wird oder die Java-Programmierung, Sprache und in Fällen, in denen Ihre bei der Implementierung nativen Code (C/C++).
Entwicklungsumgebung einrichten
Laden Sie die neueste Version des Unity-Plug-ins für In-App-Updates von Google Play aus den Google-Paketen für Unity:
Unity SDK – Übersicht
Die Play In-App Update API ist Teil des Play Core
SDK-Familie. Die Einheit
Das Plug-in bietet eine
AppUpdateManager
zur Kommunikation zwischen deiner App und der Play API. Du musst
Instanziieren Sie diesen Kurs, bevor Sie damit In-App-Updates verwalten können:
AppUpdateManager appUpdateManager = new AppUpdateManager();
Verfügbarkeit von Updates prüfen
Bevor Sie ein Update anfordern, prüfen Sie, ob ein Update für Ihr
Mit AppUpdateManager
in einem
coroutine angeben:
IEnumerator CheckForUpdate()
{
PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
appUpdateManager.GetAppUpdateInfo();
// Wait until the asynchronous operation completes.
yield return appUpdateInfoOperation;
if (appUpdateInfoOperation.IsSuccessful)
{
var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
// Check AppUpdateInfo's UpdateAvailability, UpdatePriority,
// IsUpdateTypeAllowed(), etc. and decide whether to ask the user
// to start an in-app update.
}
else
{
// Log appUpdateInfoOperation.Error.
}
}
Die zurückgegebene
AppUpdateInfo
Instanz den Verfügbarkeitsstatus des Updates enthält. Wenn bereits ein In-App-Update
ausgeführt wird, meldet die Instanz auch den Status des laufenden Updates.
Aktualität von Updates prüfen
Neben der Prüfung, ob ein Update verfügbar ist, Prüfen, wie viel Zeit seit der letzten Benachrichtigung des Nutzers über ein Update vergangen ist über den Play Store. So können Sie besser entscheiden, ob Sie ein flexibles Update oder ein sofortiges Update. Warten Sie z. B. einige Tage bevor der Nutzer mit einem flexiblen Update benachrichtigt wird, und einige Tage später bevor eine sofortige Aktualisierung erforderlich ist.
Verwenden Sie
ClientVersionStalenessDays
um zu sehen, wie viele Tage seit dem Update über Google Play
Geschäft:
var stalenessDays = appUpdateInfoOperation.ClientVersionStalenessDays;
Updatepriorität prüfen
Mit der Google Play Developer API können Sie die Priorität jedes Updates festlegen. So kann Ihre App entscheiden, wie dringend ein Update dem Nutzer empfohlen wird. Betrachten Sie beispielsweise die folgende Strategie zum Festlegen der Aktualisierungspriorität:
- Kleinere Verbesserungen der Benutzeroberfläche: Aktualisierung mit niedriger Priorität. weder eine flexible noch ein sofortiges Update.
- Leistungsverbesserungen: Update mit mittlerer Priorität flexibles aktualisieren.
- Kritisches Sicherheitsupdate: Update mit hoher Priorität Sofortige Anforderung aktualisieren.
Zur Bestimmung der Priorität verwendet Google Play einen ganzzahligen Wert zwischen 0 und 5 mit 0
Standardeinstellung und 5 die höchste Priorität. Zum Festlegen der Priorität für eine
aktualisieren Sie das Feld inAppUpdatePriority
unter Edits.tracks.releases
in der
Google Play Developer API Alle neu hinzugefügten Versionen im Release
dieselbe Priorität wie die Veröffentlichung haben. Die Priorität kann nur festgelegt werden, wenn
wenn ein neuer Release eingeführt wird.
Diese kann später nicht mehr geändert werden.
Legen Sie die Priorität mithilfe der Google Play Developer API fest, wie in der Google Play Developer API
Entwickler-API
Dokumentation.
Die Priorität für In-App-Updates sollte in der
Edit.tracks
im Feld
Edit.tracks: update
. Das folgende Beispiel zeigt die Veröffentlichung einer App mit dem Versionscode 88.
und inAppUpdatePriority
5:
{ "releases": [{ "versionCodes": ["88"], "inAppUpdatePriority": 5, "status": "completed" }] }
Im Code Ihrer App können Sie die Prioritätsstufe für ein bestimmtes Update mit
UpdatePriority
:
var priority = appUpdateInfoOperation.UpdatePriority;
Update starten
Nachdem Sie sichergestellt haben, dass ein Update verfügbar ist, können Sie es mit
AppUpdateManager.StartUpdate()
Bevor Sie eine Aktualisierung anfordern, sollten Sie
AppUpdateInfo
-Objekt. Sie müssen auch eine
AppUpdateOptions
-Objekt, um den Aktualisierungsablauf zu konfigurieren.
Im folgenden Beispiel wird ein AppUpdateOptions
-Objekt für eine sofortige
Ablauf aktualisieren:
// Creates an AppUpdateOptions defining an immediate in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();
Im folgenden Beispiel wird ein AppUpdateOptions
-Objekt für eine flexible
Ablauf aktualisieren:
// Creates an AppUpdateOptions defining a flexible in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.FlexibleAppUpdateOptions();
Das AppUpdateOptions
-Objekt enthält auch ein AllowAssetPackDeletion
-Feld
der definiert, ob das Update das Asset löschen darf
Paketen bei begrenztem Speicherplatz auf dem Gerät. Dieses
ist standardmäßig auf false
gesetzt. Sie können den Wert
Optionales Argument allowAssetPackDeletion
für ImmediateAppUpdateOptions()
oder
FlexibleAppUpdateOptions()
, um sie stattdessen auf true
festzulegen:
// Creates an AppUpdateOptions for an immediate flow that allows
// asset pack deletion.
var appUpdateOptions =
AppUpdateOptions.ImmediateAppUpdateOptions(allowAssetPackDeletion: true);
// Creates an AppUpdateOptions for a flexible flow that allows asset
// pack deletion.
var appUpdateOptions =
AppUpdateOptions.FlexibleAppUpdateOptions(allowAssetPackDeletion: true);
Die nächsten Schritte hängen davon ab, ob Sie eine flexible Update oder ein sofortiges Update.
Flexible Aktualisierung verarbeiten
Wenn Sie ein aktuelles AppUpdateInfo
-Objekt und ein korrekt konfiguriertes
AppUpdateOptions
-Objekt enthält, können Sie AppUpdateManager.StartUpdate()
aufrufen, um
um einen Aktualisierungsablauf asynchron anzufordern.
IEnumerator StartFlexibleUpdate()
{
// Creates an AppUpdateRequest that can be used to monitor the
// requested in-app update flow.
var startUpdateRequest = appUpdateManager.StartUpdate(
// The result returned by PlayAsyncOperation.GetResult().
appUpdateInfoResult,
// The AppUpdateOptions created defining the requested in-app update
// and its parameters.
appUpdateOptions);
while (!startUpdateRequest.IsDone)
{
// For flexible flow,the user can continue to use the app while
// the update downloads in the background. You can implement a
// progress bar showing the download status during this time.
yield return null;
}
}
Für einen flexiblen Updateablauf musst du die Installation des App-Updates auslösen
nachdem der Download erfolgreich abgeschlossen wurde. Rufen Sie dazu
AppUpdateManager.CompleteUpdate()
,
Dies wird im folgenden Beispiel gezeigt:
IEnumerator CompleteFlexibleUpdate()
{
var result = appUpdateManager.CompleteUpdate();
yield return result;
// If the update completes successfully, then the app restarts and this line
// is never reached. If this line is reached, then handle the failure (e.g. by
// logging result.Error or by displaying a message to the user).
}
Sofortige Aktualisierung verarbeiten
Wenn Sie ein aktuelles AppUpdateInfo
-Objekt und ein korrekt konfiguriertes
AppUpdateOptions
-Objekt enthält, können Sie AppUpdateManager.StartUpdate()
aufrufen, um
um einen Aktualisierungsablauf asynchron anzufordern.
IEnumerator StartImmediateUpdate()
{
// Creates an AppUpdateRequest that can be used to monitor the
// requested in-app update flow.
var startUpdateRequest = appUpdateManager.StartUpdate(
// The result returned by PlayAsyncOperation.GetResult().
appUpdateInfoResult,
// The AppUpdateOptions created defining the requested in-app update
// and its parameters.
appUpdateOptions);
yield return startUpdateRequest;
// If the update completes successfully, then the app restarts and this line
// is never reached. If this line is reached, then handle the failure (for
// example, by logging result.Error or by displaying a message to the user).
}
Wenn ein Update sofort durchgeführt werden soll, wird in Google Play ein Bestätigungsdialogfeld für den Nutzer angezeigt. Wenn der Nutzer die Anfrage annimmt, lädt Google Play automatisch installiert das Update und startet die App dann mit der aktualisierten Version neu, wenn die Installation erfolgreich war.
Fehlerbehandlung
In diesem Abschnitt werden Lösungen für häufige Fehler beschrieben.
- Wenn
StartUpdate()
eineArgumentNullException
ausgibt, bedeutet dies, dassAppUpdateInfo
ist null. Achten Sie darauf, dass dasAppUpdateInfo
-Objekt, das vonGetAppUpdateInfo()
ist vor dem Start des Aktualisierungsvorgangs nicht null. - Wenn
PlayAsyncOperation
den FehlercodeErrorUpdateUnavailable
zurückgibt, ob eine aktualisierte App-Version mit derselben App verfügbar ist ID und Signaturschlüssel. - Wenn
PlayAsyncOperation
den FehlercodeErrorUpdateNotAllowed
zurückgibt, bedeutet, dass dasAppUpdateOptions
-Objekt einen Aktualisierungstyp angibt, der nicht für das verfügbare Update zugelassen ist. Prüfen Sie, ob dasAppUpdateInfo
-Objekt gibt an, dass der ausgewählte Aktualisierungstyp vor dem Start des Updates zulässig ist Ablauf.
Nächste Schritte
Teste die In-App-Updates, um dies zu prüfen ob Ihre Integration ordnungsgemäß funktioniert.