Utiliser Google Play Instant avec Unity

Avertissement : Google Play Instant ne sera plus disponible. À partir de décembre 2025, les Applis instantanées ne pourront plus être publiées sur Google Play, et toutes les API Instant des services Google Play ne fonctionneront plus. Play ne proposera plus d'applis instantanées aux utilisateurs, quel que soit le mécanisme utilisé.

Nous apportons cette modification en fonction des commentaires des développeurs et de nos investissements continus pour améliorer l'écosystème depuis l'introduction de Google Play Instantané.

Pour continuer à optimiser la croissance du nombre d'utilisateurs, nous encourageons les développeurs à rediriger les utilisateurs vers leur application ou leur jeu habituels à l'aide de liens profonds pour les rediriger vers des parcours ou des fonctionnalités spécifiques, le cas échéant.

Le plug-in Google Play Instant pour Unity configure votre projet Unity afin de créer une version d'application instantanée de votre jeu. Ce guide explique comment installer et utiliser ce plug-in.

Télécharger et importer le plug-in

Le plug-in fait partie des plug-ins Google Play pour Unity. Pour importer le plug-in, procédez comme suit :

  1. Téléchargez la dernière version des plug-ins Google Play pour Unity.
  2. Importez le fichier .unitypackage en sélectionnant l'option de menu de l'IDE Unity Assets > Import package > Custom Package (Composants > Importer un package > Package personnalisé), puis en important tous les éléments.

Fonctionnalités de l'éditeur Unity

Importez le plug-in pour ajouter un sous-menu Google > Play Instant dans Unity. Ce sous-menu propose les options suivantes.

Paramètres de compilation

Ouvre une fenêtre permettant de basculer entre les modes de développement Installé et Instantané. Le passage à Instant entraîne les modifications suivantes :

  • Crée un symbole de définition de script appelé PLAY_INSTANT, qui peut être utilisé pour la création de scripts avec #if PLAY_INSTANT et #endif.
  • Gère les mises à jour du fichier AndroidManifest.xml pour certaines modifications requises, telles que android:targetSandboxVersion.

Paramètres du lecteur

La boîte de dialogue Player Settings (Paramètres du lecteur), illustrée à la figure 1, affiche des suggestions pour vous aider à optimiser la compatibilité avec Google Play Instant, à développer des API graphiques plus compatibles et à réduire la taille de votre APK.

Les suggestions spécifiques incluent l'utilisation d'OpenGL ES 2.0 uniquement et la désactivation du rendu multithread.
Figure 1. Boîte de dialogue Player Settings (Paramètres du lecteur)

Ces paramètres du lecteur sont divisés en paramètres obligatoires et recommandés. Si un paramètre comporte un bouton Mettre à jour, cliquez dessus pour définir la valeur de votre choix.

Pour réduire davantage la taille de l'APK, ouvrez le gestionnaire de packages Unity et supprimez tous les packages inutilisés.

Déploiement rapide

Le déploiement rapide peut réduire la taille d'une application instantanée basée sur Unity en regroupant certains éléments dans un AssetBundle. Lorsque vous utilisez le déploiement rapide, le moteur de jeu Unity et un écran de chargement sont regroupés dans un APK d'appli instantanée. Une fois l'appli instantanée lancée, elle récupère l'AssetBundle à partir d'un serveur.

Assistance pour les workflows d'installation

L'objectif de nombreuses applications instantanées est de permettre aux utilisateurs de découvrir l'application avant d'installer la version complète. Le plug-in Google Play Instant pour Unity fournit des API permettant d'afficher une boîte de dialogue d'installation du Play Store et de transférer l'état de l'application instantanée vers l'application installée.

Afficher une invite d'installation

Une appli instantanée avec un bouton Installer peut afficher une boîte de dialogue d'installation du Play Store en appelant ce qui suit à partir d'un gestionnaire de clic sur le bouton d'installation :

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

La méthode ShowInstallPrompt() comporte une surcharge qui permet d'effectuer une ou plusieurs des opérations suivantes :

  • Déterminer si l'utilisateur annule le processus d'installation. Remplacez onActivityResult() dans l'activité principale de l'appli instantanée et recherchez RESULT_CANCELED sur le requestCode spécifié.
  • Transmettre une chaîne de provenance de l'installation via le paramètre referrer.
  • Transmettre l'état de la session de jeu en cours via PutPostInstallIntentStringExtra().

Voici un exemple :

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

Si l'utilisateur termine l'installation de l'application, le Play Store relance l'application à l'aide de l'postInstallIntent fourni. L'application installée peut récupérer une valeur définie dans postInstallIntent à l'aide de ce qui suit :

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

Remarques :

  • Il est possible que les extras inclus dans le postInstallIntent n'atteignent pas l'application installée si l'utilisateur installe l'application, mais annule le lancement post-installation. Il est préférable de transmettre des extras d'intent pour conserver l'état de la session active plutôt que l'état persistant. Pour ce dernier, consultez l'API Cookie.
  • N'importe qui peut créer un intent avec des champs supplémentaires pour lancer l'application installée. Par conséquent, si la charge utile accorde quelque chose de valeur, concevez-la de manière à ce qu'elle ne puisse être utilisée qu'une seule fois, signez-la de manière cryptographique et validez la signature sur un serveur.

L'API Cookie fournit des méthodes permettant de transmettre un cookie (par exemple, l'ID du joueur ou les données de progression dans le jeu) d'une application instantanée à l'application installée correspondante. Contrairement aux extras postInstallIntent, l'état du cookie est disponible même si l'utilisateur ne lance pas immédiatement l'application installée. Par exemple, une application instantanée peut appeler le code suivant à partir d'un gestionnaire de clics sur le bouton d'installation :

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

Si l'utilisateur termine l'installation de l'application, celle-ci peut récupérer les données des cookies à l'aide du code suivant :

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