Utilizza Google Play Instant con Unity

Avviso: Google Play Instant non sarà più disponibile. A partire da dicembre 2025, le app istantanee non potranno essere pubblicate tramite Google Play e tutte le API istantanee di Google Play Services non funzioneranno più. Play non pubblicherà più app istantanee per gli utenti utilizzando alcun meccanismo.

Stiamo apportando questa modifica in base al feedback degli sviluppatori e ai nostri continui investimenti per migliorare l'ecosistema dall'introduzione di Google Play Instant.

Per continuare a ottimizzare per la crescita degli utenti, invitiamo gli sviluppatori a indirizzare gli utenti a alla loro app o al loro gioco normale, utilizzando i link diretti per reindirizzarli a percorsi o funzionalità specifici, se pertinenti.

Il plug-in Google Play Instant per Unity configura il progetto Unity per creare una versione di app istantanea del 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 il plug-in:

  1. Scarica l'ultima release da plug-in di Google Play per le release di Unity.
  2. Importa il file .unitypackage selezionando l'opzione di menu dell'IDE Unity Assets > Import package > Custom Package (Asset > Importa pacchetto > Pacchetto personalizzato) e importando tutti gli elementi.

Funzionalità dell'editor Unity

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

Build Settings (Impostazioni build)

Apre una finestra che consente di passare dalla modalità di sviluppo Installed (Installata) a quella Instant (Istantanea). Il passaggio a Instant (Istantanea) comporta le seguenti modifiche:

  • Crea un simbolo di definizione di scripting denominato PLAY_INSTANT che può essere utilizzato per lo scripting con #if PLAY_INSTANT e #endif.
  • Gestisce gli aggiornamenti di AndroidManifest.xml per alcune modifiche obbligatorie, ad esempio come android:targetSandboxVersion.

Player Settings (Impostazioni del player)

La finestra di dialogo Player Settings (Impostazioni del player), mostrata nella Figura 1, mostra suggerimenti per aiutarti a ottimizzare il supporto per Google Play Instant, sviluppare con API grafiche più compatibili 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 Player Settings (Impostazioni del player)

Queste impostazioni del player sono suddivise in impostazioni Required (Obbligatorie) e Recommended (Consigliate). Se un'impostazione ha un pulsante Update (Aggiorna) corrispondente, fai clic su di esso per modificare l'impostazione con il valore preferito.

Per ridurre ulteriormente le dimensioni dell'APK, apri Unity Package Manager e rimuovi tutti i pacchetti inutilizzati.

Quick Deploy (Deployment rapido)

Il deployment rapido può ridurre le dimensioni di un'app istantanea basata su Unity impacchettando alcuni asset in un AssetBundle. Quando utilizzi il deployment rapido, il motore grafico Unity e una schermata di caricamento vengono impacchettati in un APK dell'app istantanea e, dopo l'avvio dell'app istantanea, recupera l'AssetBundle da un server.

Supportare i flussi di lavoro di installazione

L'obiettivo di molte app istantanee è dare agli utenti la possibilità di provare 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.

Mostrare un prompt di installazione

Un'app istantanea con un pulsante Install (Installa) può visualizzare una finestra di dialogo di installazione del Play Store chiamando quanto segue da un gestore di clic del pulsante di installazione:

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

Il metodo ShowInstallPrompt() ha un overload che consente una o più delle seguenti operazioni:

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

Questi elementi sono illustrati 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 riavvia l'app utilizzando 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 l'app installata se l'utente installa l'app ma annulla l'avvio post-installazione. Il passaggio di extra di intent è più adatto per mantenere lo stato della sessione attiva che per mantenere lo stato persistente; per quest'ultimo, consulta l'API Cookie.
  • Chiunque può creare un intent con campi extra per avviare l'app installata, quindi se il payload concede qualcosa di valore, progettalo in modo che possa essere utilizzato una sola volta, firmalo crittograficamente e verifica la firma su un server.

L'API Cookie fornisce metodi per passare un cookie (ad es. ID giocatore o dati di completamento del livello) da un'app istantanea alla relativa app installata. A differenza degli extra postInstallIntent, lo stato del cookie è disponibile anche se l'utente non avvia immediatamente l'app installata. Ad esempio, un'app istantanea potrebbe chiamare il seguente codice da un gestore di clic del 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 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.
}