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ù. Gli utenti non riceveranno più app istantanee da Play 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 alla loro app o al loro gioco normale utilizzando i deep link per reindirizzarli a percorsi o funzionalità specifici, se pertinenti.

Il plug-in Google Play Instant per Unity configura il tuo progetto Unity per creare una versione di 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 il plug-in, segui questi passaggi:

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

Funzionalità di Unity Editor

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

Impostazioni build

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

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

Impostazioni del player

La finestra di dialogo Impostazioni giocatore, mostrata nella Figura 1, mostra suggerimenti per aiutarti a ottimizzare il supporto di Google Play Instant, sviluppare in base ad 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 Impostazioni del player

Queste impostazioni del player sono suddivise in impostazioni obbligatorie e consigliate. Se un'impostazione ha un pulsante Aggiorna corrispondente, fai clic per modificare l'impostazione con il valore preferito.

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

Quick Deploy

Quick Deploy può ridurre le dimensioni di un'app istantanea basata su Unity raggruppando alcune risorse in un AssetBundle. Quando utilizzi Quick Deploy, il motore grafico Unity e una schermata di caricamento vengono inclusi in un APK di app istantanea e, dopo l'avvio dell'app istantanea, viene recuperato 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 a quella installata.

Mostrare una richiesta di installazione

Un'app istantanea con un pulsante 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 verifica la presenza di RESULT_CANCELED nell'requestCode specificato.
  • Trasmissione di una stringa di referrer di installazione tramite il parametro referrer.
  • Stato del passaggio relativo alla sessione di gioco corrente tramite PutPostInstallIntentStringExtra().

Questi sono illustrati nel seguente esempio:

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 l'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 intent è più adatto a mantenere lo stato della sessione attiva rispetto al mantenimento dello stato persistente; per quest'ultimo, consulta l'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 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 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, 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.
}