Utilizza Google Play Instant con Unity

Il plug-in Google Play Instant per Unity configura il tuo progetto Unity per creare un app istantanea del tuo gioco. Questa guida descrive come installare e utilizzare questo plug-in.

Scaricare e importare il plug-in

Il plug-in fa parte dei plug-in di Google Play per Unity. Per importare Per eseguire il plug-in, procedi nel seguente modo:

  1. Scarica l'ultima release dai plug-in di Google Play per le release Unity.
  2. Importa il file .unitypackage selezionando l'opzione di menu IDE Unity Asset > Importa pacchetto > Pacchetto personalizzato e importare tutti gli elementi.

Funzionalità di Unity Editor

Importa il plug-in per aggiungere un Google > Sottomenu Play Instant in Unity. Questo offre le seguenti opzioni.

Impostazioni build

Apre una finestra che consente il passaggio tra Installata e Istantanea di sviluppo software. Il passaggio a Istantanea comporta le seguenti modifiche:

  • Crea un simbolo di definizione dello script denominato PLAY_INSTANT che può essere utilizzato per scripting con #if PLAY_INSTANT e #endif.
  • Gestisce gli aggiornamenti al file AndroidManifest.xml per alcune modifiche richieste quali come android:targetSandboxVersion.

Impostazioni del player

La finestra di dialogo Impostazioni player, mostrata nella Figura 1, mostra suggerimenti utili ottimizzi il supporto di Google Play Instant, svilupparle in base a API grafiche e ridurre le dimensioni dell'APK.

I suggerimenti specifici includono l'utilizzo solo di OpenGL ES 2.0 e
  la disattivazione del rendering multithread.
Figura 1. La finestra di dialogo Impostazioni del player

Queste impostazioni del player sono suddivise in Obbligatorie e Consigliate impostazioni. Se un'impostazione ha un pulsante Aggiorna corrispondente, fai clic sull'impostazione per cambia l'impostazione sul valore preferito.

Per ridurre ulteriormente le dimensioni dell'APK, apri il gestore di pacchetti Unity e rimuovi eventuali pacchetti inutilizzati.

Deployment rapido

Il deployment rapido può ridurre le dimensioni di un'app istantanea basata su Unity pacchettizzando alcune in un tag AssetBundle. Quando si utilizza il deployment rapido, vengono pacchettizzati il motore di gioco Unity e una schermata di caricamento. in un APK di app istantanea e, dopo l'avvio, recupera il AssetBundle da un server.

Supporta i flussi di lavoro di installazione

L'obiettivo di molte app istantanee è offrire agli utenti la possibilità di provarla prima di installare la versione completa. Il plug-in Google Play Instant per Unity fornisce API per mostrare una finestra di dialogo di installazione del Play Store e per trasferire lo stato da istantanea all'app installata.

Mostra una richiesta di installazione

Un'app istantanea con un pulsante Installa può mostrare un'installazione del Play Store richiamando il codice seguente da un gestore dei clic sul pulsante Installa:

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

Il metodo ShowInstallPrompt() ha un sovraccarico che consente uno o più di questi le seguenti:

  • Determinare se l'utente annulla la procedura di installazione. Esegui override onActivityResult() nell'attività principale dell'app istantanea e controlla se RESULT_CANCELED sul requestCode specificato.
  • Trasmettere una stringa referrer di installazione tramite il parametro referrer.
  • Stato di superamento della sessione di gioco corrente tramite PutPostInstallIntentStringExtra().

Ciò è dimostrato nell'esempio seguente:

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");
}

Se l'utente completa l'installazione dell'app, il Play Store riavvierà l'app. utilizzando il postInstallIntent fornito. L'app installata può recuperare un valore impostato in postInstallIntent utilizzando quanto segue:

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

Note:

  • Gli extra inclusi in postInstallIntent potrebbero non raggiungere il dispositivo installato app se l'utente installa l'app, ma annulla l'avvio post-installazione. Il trasferimento di extra per intent è più adatto per mantenere lo stato della sessione attiva invece di conservare uno stato permanente. di quest'ultimo fai riferimento API Cookie.
  • Chiunque può creare un intent con campi aggiuntivi per avviare l'app installata Quindi, se il payload concede qualcosa di valore, progetta il payload in modo che può essere usato una sola volta, firmarlo in modo crittografico e verificare su un server.

L'API Cookie fornisce metodi per trasmettere un cookie (ad es. ID player o livello dati di completamento) da un'app istantanea all'app installata corrispondente. Non mi piace postInstallIntent extra, lo stato dei cookie è disponibile anche se l'utente non avvia immediatamente l'app installata. Ad esempio, un'app istantanea potrebbe richiama il seguente codice da un gestore dei clic su un pulsante di installazione:

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);
}

Se l'utente completa l'installazione dell'app, l'app installata può recuperare il utilizzando il seguente codice:

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