Google Play Instant mit Unity verwenden

Warnung:Google Play Instant ist nicht mehr verfügbar. Ab Dezember 2025 können Instant Apps nicht mehr über Google Play veröffentlicht werden und alle Google Play-Dienste-Instant-APIs funktionieren nicht mehr. Nutzer erhalten keine Instant Apps mehr von Play.

Wir nehmen diese Änderung aufgrund von Entwicklerfeedback und unserer kontinuierlichen Investitionen zur Verbesserung des Ökosystems seit der Einführung von Google Play Instant vor.

Damit Sie Ihre App weiter optimieren und noch mehr Nutzer gewinnen können, empfehlen wir, Nutzer über Deeplinks zu Ihrer regulären App oder Ihrem regulären Spiel weiterzuleiten und so ihr Interesse für bestimmte Inhalte zu wecken.

Das Google Play Instant-Plug-in für Unity konfiguriert Ihr Unity-Projekt so, dass eine Instant App-Version Ihres Spiels erstellt wird. In diesem Leitfaden wird beschrieben, wie Sie dieses Plug-in installieren und verwenden.

Plug-in herunterladen und importieren

Das Plug‑in ist Teil der Google Play-Plug‑ins für Unity. So importieren Sie das Plug-in:

  1. Laden Sie den aktuellen Release von Google Play-Plug-ins für Unity herunter.
  2. Importieren Sie die .unitypackage-Datei, indem Sie im Unity-IDE-Menü Assets > Import Package > Custom Package auswählen und alle Elemente importieren.

Unity-Editor-Funktionen

Importieren Sie das Plug-in, um in Unity das Untermenü Google > Play Instant hinzuzufügen. Dieses Untermenü bietet die folgenden Optionen.

Build-Einstellungen

Öffnet ein Fenster, in dem Sie zwischen den Entwicklermodi Installiert und Sofort wechseln können. Beim Wechsel zu Sofort werden die folgenden Änderungen vorgenommen:

  • Erstellt ein Scripting-Define-Symbol mit dem Namen PLAY_INSTANT, das für das Scripting mit #if PLAY_INSTANT und #endif verwendet werden kann.
  • Verwaltet Updates für die Datei „AndroidManifest.xml“ für bestimmte erforderliche Änderungen wie android:targetSandboxVersion.

Videoplayer-Einstellungen

Im Dialogfeld Player Settings (Playereinstellungen), das in Abbildung 1 dargestellt ist, werden Vorschläge angezeigt, die Ihnen helfen, die Unterstützung für Google Play Instant zu optimieren, mit kompatibleren Grafik-APIs zu entwickeln und die Größe Ihrer APK zu reduzieren.

Konkrete Empfehlungen sind die Verwendung von OpenGL ES 2.0 und das Deaktivieren von Multithreaded Rendering.
Abbildung 1: Das Dialogfeld Player Settings

Diese Playereinstellungen sind in Erforderlich und Empfohlen unterteilt. Wenn für eine Einstellung die Schaltfläche Aktualisieren angezeigt wird, klicken Sie darauf, um die Einstellung auf den bevorzugten Wert zu ändern.

Um die APK-Größe weiter zu reduzieren, öffnen Sie den Unity Package Manager und entfernen Sie alle nicht verwendeten Pakete.

Schnell bereitstellen

Mit Quick Deploy kann die Größe einer Unity-basierten Instant-App reduziert werden, indem einige Assets in einem AssetBundle verpackt werden. Bei der Schnellbereitstellung werden die Unity-Spiel-Engine und ein Ladebildschirm in ein Instant-App-APK gepackt. Nach dem Start der Instant App wird das AssetBundle von einem Server abgerufen.

Installationsworkflows unterstützen

Viele Instant-Apps sollen Nutzern die Möglichkeit geben, die App vor der Installation der Vollversion auszuprobieren. Das Google Play Instant-Plug-in für Unity bietet APIs zum Anzeigen eines Play Store-Installationsdialogfelds und zum Übertragen des Status von der Instant App zur installierten App.

Installationsaufforderung anzeigen

Bei einer Instant App mit der Schaltfläche Installieren kann ein Play Store-Installationsdialogfeld angezeigt werden, indem der folgende Code aus einem Click-Handler für die Schaltfläche „Installieren“ aufgerufen wird:

Google.Play.Instant.InstallLauncher.ShowInstallPrompt();

Die Methode ShowInstallPrompt() hat eine Überladung, die Folgendes ermöglicht:

  • Ermitteln, ob der Nutzer den Installationsvorgang abbricht. Überschreiben Sie onActivityResult() in der Hauptaktivität der Instant App und prüfen Sie RESULT_CANCELED für den angegebenen requestCode.
  • Übergeben eines Strings für die Installationsquelle über den Parameter referrer.
  • Übergeben des Status der aktuellen Spielsitzung über PutPostInstallIntentStringExtra().

Dies wird im folgenden Beispiel veranschaulicht:

using Google.Play.Instant;
...
const int requestCode = 123;
var sessionInfo = /* Object serialized as a string representing player's current location, etc. */;
using (var activity = UnityPlayerHelper.GetCurrentActivity())
using (var postInstallIntent = InstallLauncher.CreatePostInstallIntent(activity))
{
    InstallLauncher.PutPostInstallIntentStringExtra(postInstallIntent, "sessionInfo", sessionInfo);
    InstallLauncher.ShowInstallPrompt(activity, requestCode, postInstallIntent, "test-referrer");
}

Wenn der Nutzer die App-Installation abschließt, wird die App vom Play Store mit dem bereitgestellten postInstallIntent neu gestartet. Die installierte App kann einen in postInstallIntent festgelegten Wert mit dem folgenden Code abrufen:

var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");

Hinweise:

  • Die im postInstallIntent enthaltenen Extras werden möglicherweise nicht an die installierte App gesendet, wenn der Nutzer die App installiert, den Start nach der Installation aber abbricht. Das Übergeben von Intent-Extras eignet sich besser zum Beibehalten des aktiven Sitzungsstatus als zum Beibehalten des persistenten Status. Für Letzteres sollten Sie die Cookie API verwenden.
  • Jeder kann eine Absicht mit zusätzlichen Feldern erstellen, um die installierte App zu starten. Wenn die Nutzlast also etwas Wertvolles gewährt, sollte sie so gestaltet sein, dass sie nur einmal verwendet werden kann. Außerdem sollte sie kryptografisch signiert und die Signatur auf einem Server überprüft werden.

Die Cookie API bietet Methoden zum Übergeben eines Cookies (z.B. Spieler-ID oder Daten zum Abschluss eines Levels) von einer Instant-App an die entsprechende installierte App. Im Gegensatz zu postInstallIntent-Extras ist der Cookie-Status auch dann verfügbar, wenn der Nutzer die installierte App nicht sofort startet. Eine Instant-App könnte beispielsweise den folgenden Code aus einem Klick-Handler für die Schaltfläche „Installieren“ aufrufen:

using Google.Play.Instant;
...
var playerInfo = /* Object serialized as a string representing game levels completed, etc. */;
var cookieBytes = System.Text.Encoding.UTF8.GetBytes(playerInfo);
try
{
    var maxCookieSize = CookieApi.GetInstantAppCookieMaxSize();
    if (cookieBytes.Length > maxCookieSize)
    {
        UnityEngine.Debug.LogErrorFormat("Cookie length {0} exceeds limit {1}.", cookieBytes.Length, maxCookieSize);
    }
    else if (CookieApi.SetInstantAppCookie(cookieBytes))
    {
        UnityEngine.Debug.Log("Successfully set cookie. Now display the app install dialog...");
        InstallLauncher.ShowInstallPrompt();
    }
    else
    {
        UnityEngine.Debug.LogError("Failed to set cookie.");
    }
}
catch (CookieApi.InstantAppCookieException ex)
{
    UnityEngine.Debug.LogErrorFormat("Failed to set cookie: {0}", ex);
}

Wenn der Nutzer die App-Installation abschließt, kann die installierte App die Cookie-Daten mit dem folgenden Code abrufen:

var cookieBytes = CookieApi.GetInstantAppCookie();
var playerInfoString = System.Text.Encoding.UTF8.GetString(cookieBytes);
if (!string.IsNullOrEmpty(playerInfoString))
{
    // Initialize game state based on the cookie, e.g. skip tutorial level completed in instant app.
}