Utilizza Google Play Instant con Unity

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

Scarica e importa il plug-in

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

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

Funzionalità dell'editor Unity

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

Impostazioni build

Apre una finestra che consente di passare dalla modalità di sviluppo Installata a quella Istantanea e viceversa. Il passaggio a Istantaneo comporta le seguenti modifiche:

  • Crea un simbolo di definizione dello script chiamato PLAY_INSTANT che può essere utilizzato per lo scripting con #if PLAY_INSTANT e #endif.
  • Gestisce gli aggiornamenti del file AndroidManifest.xml per alcune modifiche richieste, ad esempio android:targetSandboxVersion.

Impostazioni del player

La finestra di dialogo Impostazioni del player, mostrata nella Figura 1, mostra suggerimenti utili per ottimizzare il supporto di Google Play Instant, sviluppare rispetto ad API grafiche più compatibili e ridurre le dimensioni dell'APK.

Alcuni suggerimenti specifici includono l'utilizzo esclusivo 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. Se a un'impostazione è associato un pulsante Aggiorna, fai clic sul pulsante per impostare il 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 alcuni asset in un AssetBundle. Quando utilizzi il deployment rapido, il motore di gioco Unity e una schermata di caricamento vengono pacchettizzati in un APK dell'app istantanea e, dopo l'avvio, l'app istantanea recupera AssetBundle da un server.

Flussi di lavoro dell'installazione del supporto

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

Mostra richiesta di installazione

Un'app istantanea con un pulsante Installa può visualizzare una finestra di dialogo di installazione del Play Store richiamando la seguente chiamata da un gestore dei clic del pulsante Installa:

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

Il metodo ShowInstallPrompt() ha un sovraccarico che consente uno o più dei seguenti elementi:

  • Determinare se l'utente annulla la procedura di installazione. Esegui l'override di onActivityResult() nell'attività principale dell'app istantanea e controlla la presenza di RESULT_CANCELED nel requestCode specificato.
  • Trasmissione di una stringa referrer di installazione tramite il parametro referrer.
  • Trasmissione dello stato della sessione di gioco in corso 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 la riavvierà utilizzando l'elemento postInstallIntent fornito. L'app installata può recuperare un set di valori in postInstallIntent utilizzando quanto segue:

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

Note

  • Gli extra inclusi in postInstallIntent potrebbero non essere accessibili all'app installata se l'utente installa l'app, ma annulla il lancio post-installazione. La trasmissione di elementi extra per intent è più adatta per mantenere lo stato della sessione attiva piuttosto che per mantenere lo stato permanente; per quest'ultimo, fai riferimento all'API Cookie.
  • Chiunque può creare un intent con campi aggiuntivi per avviare l'app installata. Pertanto, se il payload concede qualcosa di valore, progetta il payload in modo che possa essere utilizzato una sola volta, firmalo in modo crittografico e verifica la firma su un server.

L'API Cookie fornisce metodi per trasferire un cookie (ad esempio, ID giocatore o dati sul completamento di un livello) da un'app istantanea all'app installata corrispondente. A differenza delle app aggiuntive di postInstallIntent, lo stato dei cookie è disponibile anche se l'utente non avvia immediatamente l'app installata. Ad esempio, un'app istantanea potrebbe chiamare il codice seguente da un gestore dei clic sul 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, quest'ultima può recuperare i dati dei cookie 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.
}