Configurare Google Play Giochi per Unity e autenticarsi

Questo documento ti guida nella configurazione del progetto Unity per utilizzare il plug-in Google Play Games per Unity. Scoprirai come installare il plug-in e configurare il progetto Unity. Il documento spiega anche come verificare il servizio di autenticazione.

Prima di iniziare

Esamina i requisiti software. Configura Play Console e installa Unity Editor.

Installazione del plug-in

Per scaricare e installare il plug-in Google Play Games per Unity, segui questi passaggi in Unity Editor:

  1. Scarica il repository GitHub.

  2. Nella directory current-build, individua il file unitypackage. Questo file rappresenta il plug-in. Ad esempio, dovrebbe essere simile al seguente:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Configurare il progetto Unity

Per configurare un progetto Unity nelle impostazioni del giocatore:

  1. Apri il progetto di gioco.

  2. In Unity Editor, fai clic su Assets > Import Package > Custom Package (Risorse > Importa pacchetto > Pacchetto personalizzato) per importare il file unitypackage nelle risorse del progetto.

  3. Assicurati che la piattaforma di build corrente sia impostata su Android.

    1. Nel menu principale, fai clic su File > Build Settings (File > Impostazioni di build).

    2. Seleziona Android e fai clic su Switch Platform (Cambia piattaforma).

    3. Dovrebbe essere presente una nuova voce di menu in Window > Google Play Games (Finestra > Google Play Games). In caso contrario, aggiorna le risorse facendo clic su Assets > Refresh (Risorse > Aggiorna) e poi prova a impostare di nuovo la piattaforma di build.

  4. In Unity Editor, fai clic su File > Build Settings > Player Settings > Other Settings (File > Impostazioni di build > Impostazioni del giocatore > Altre impostazioni).

  5. Nella casella Target API level (Livello API target), seleziona una versione.

  6. Nella casella Scripting backend (Backend di scripting), inserisci IL2CPP.

  7. Nella casella Target architectures (Architetture target), seleziona un valore.

  8. Prendi nota del nome del pacchetto package_name.Puoi utilizzare queste informazioni in un secondo momento.

Le impostazioni del player nel progetto Unity
Le impostazioni del giocatore nel tuo progetto Unity.

Creare un nuovo keystore

Per convalidare le credenziali, hai bisogno di una chiave. Procedi nel seguente modo:

  1. In Unity Editor, fai clic su File > Build settings > Player settings (File > Impostazioni di build > Impostazioni del giocatore).
  2. Nella sezione Publishing settings (Impostazioni di pubblicazione), fai clic su Keystore manager (Gestore keystore).
    1. Nella finestra Keystore manager (Gestore keystore), fai clic su Keystore > Create new > Anywhere (Keystore > Crea nuovo > Ovunque).
    2. Seleziona una cartella e fornisci un nome per il keystore.
    3. Nella casella Password (Password), inserisci una password e confermala.
    4. Fai clic su Add key (Aggiungi chiave).

Prendi nota del nome della cartella. Puoi utilizzare questo nome per creare una credenziale in Google Cloud.

Copiare le risorse Android da Play Console

Ogni obiettivo, classifica ed evento che crei in Play Console include una risorsa Android che utilizzi quando configuri il progetto Unity.

Per ottenere le risorse Android per il tuo gioco:

  1. In Google Play Console, apri il gioco.

  2. Nella pagina Servizi per i giochi di Play - Configurazione (Crescita > Servizi per i giochi di Play > Configurazione e gestione > Configurazione), fai clic su Ottieni risorse.

  3. Nella finestra Risorse, fai clic sulla scheda Android(XML).

  4. Seleziona e copia i contenuti delle risorse Android (AndroidManifest.xml).

Aggiungere le risorse Android al progetto Unity

Aggiungi le seguenti risorse Android al progetto Unity:

  1. In Unity Editor, fai clic su Window > Google Play Games > Setup > Android Setup (Finestra > Google Play Games > Configurazione > Configurazione Android).

    • Nel campo Directory to save constants (Directory in cui salvare le costanti), inserisci il nome della cartella per il file delle costanti.
    • Nel campo Constants class name (Nome della classe delle costanti), inserisci il nome della classe C# da creare, incluso lo spazio dei nomi.

      Ad esempio, se la classe C# è id.cs e si trova in Assets > myproject > scripts > id.cs (Risorse > myproject > script > id.cs). Il nome della classe delle costanti può essere myproject.scripts.id.

    • Nel campo Resources definition (Definizione delle risorse), incolla i dati delle risorse Android (file AndroidManifest.xml) che hai copiato da Google Play Console.

    • (Facoltativo) Nel campo Client ID (ID client), inserisci l'ID client dell'app web collegata.

      Per ottenere l'ID client del tuo gioco da Google Cloud, vedi Creare ID client.

      Questa operazione è necessaria solo se hai un backend basato sul web per il tuo gioco e hai bisogno di un codice di autorizzazione del server da scambiare con un token di accesso dal server di backend o se hai bisogno di un token ID per il giocatore per effettuare altre chiamate API non di gioco.

    • Fai clic su Configura. In questo modo, il gioco viene configurato con l'ID client e viene generata una classe C# che contiene le costanti per ciascuna delle risorse Android.

  2. In Unity Editor, fai clic su Window > Google Play Games > Setup > Nearby Connections Setup (Finestra > Google Play Games > Configurazione > Configurazione di Connessioni nelle vicinanze).

    • Nel campo Nearby connection service ID (ID servizio di connessione nelle vicinanze), inserisci package_name.

      Utilizza lo stesso package_name che hai utilizzato nella configurazione del progetto Unity.

    • Fai clic su Configura.

Scegliere una piattaforma social

Il plug-in Google Play Games Services implementa l'interfaccia social di Unity per la compatibilità con i giochi che già utilizzano questa interfaccia quando si integrano con altre piattaforme. Tuttavia, alcune funzionalità sono esclusive di Play Games e vengono offerte come estensioni dell'interfaccia social standard fornita da Unity.

È possibile accedere alle chiamate API standard tramite l'oggetto Social.Active , che è un riferimento a un'interfaccia ISocialPlatform. È possibile accedere alle estensioni non standard di Google Play Games Services eseguendo il cast dell'oggetto Social.Active nella classe PlayGamesPlatform, in cui sono disponibili i metodi aggiuntivi.

Utilizzare il plug-in senza sostituire la piattaforma social predefinita

Quando chiami PlayGamesPlatform.Activate, Google Play Games Services diventa l'implementazione della piattaforma social predefinita. Ciò significa che il plug-in Google Play Games Services esegue chiamate statiche ai metodi in Social e Social.Active, che è il comportamento previsto per la maggior parte dei giochi che utilizzano il plug-in.

Tuttavia, se per qualche motivo vuoi mantenere accessibile l'implementazione predefinita (ad esempio, per utilizzarla per inviare obiettivi e classifiche a una piattaforma social diversa), puoi utilizzare il plug-in Google Play Games Services senza sostituire quello predefinito. Per:

  1. Chiama il metodo PlayGamesPlatform.Activate.
  2. Se Xyz è il nome di un metodo che chiami nella classe Social, non chiamare Social.Xyz. Chiama invece PlayGamesPlatform.Instance.Xyz.
  3. Utilizza la PlayGamesPlatform.Instance proprietà anziché Social.Active quando interagisci con Google Play Games Services.

In questo modo, puoi persino inviare punteggi e obiettivi contemporaneamente a due o più piattaforme social:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

Verificare il servizio di autenticazione

Quando il gioco viene aperto, viene tentata automaticamente una connessione a Play Games Services utilizzando l' autenticazione della piattaforma. Se la connessione va a buon fine, il gioco mostra un prompt di accesso ed è pronto per utilizzare il plug-in Google Play Games Services per Unity.

Se un utente non ha mai utilizzato Google Play Games Services sul proprio dispositivo, viene automaticamente visualizzata una schermata di configurazione una tantum per creare un account Play Games.

Nel metodo Start dello script, ascolta il risultato del tentativo di autenticazione automatica, recupera lo stato di autenticazione e disattiva le funzionalità di Play Games Services se l'utente non è autenticato.

Se la versione del plug-in Unity è precedente alla v11, non puoi utilizzare la funzionalità di autenticazione.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

Il codice del risultato è un'enumerazione che puoi utilizzare per identificare il motivo di un errore di autenticazione.

Se preferisci utilizzare la piattaforma social di Unity, puoi utilizzare in alternativa il seguente codice:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Non puoi effettuare chiamate API Google Play Games Services finché non ricevi un valore di ritorno positivo da Authenticate. Di conseguenza, ti consigliamo di visualizzare una schermata di attesa fino a quando non viene chiamata la richiamata per assicurarti che gli utenti non possano iniziare a giocare finché l'autenticazione non è completata.

Impedire la creazione automatica del profilo

Puoi disattivare i prompt di creazione del profilo attivati automaticamente tramite il file manifest. In questo modo, gli utenti senza un profilo Play Games Services possono continuare a caricare il gioco senza che venga chiesto loro di creare un profilo Play Games Services. Per saperne di più, consulta Opzioni di creazione del profilo.

Per utilizzare questa funzionalità, assicurati che siano soddisfatte le seguenti condizioni:

  • Il dispositivo non ha un profilo Play Games Services su nessuno degli Account Google con cui è stato eseguito l'accesso.
  • Il tuo gioco è integrato con Play Games Services plug-in Unity 2.1.0 o versioni successive.
  1. Nel file AndroidManifest.xml, aggiungi il com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION tag nell' <meta-data> elemento e gli attributi all'<application> elemento:

    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION"
            android:value="true" />
        ...
    </application>

    Se imposti questo flag su true, Play Games Services viene informato che il gioco gestirà la procedura di creazione del profilo. Di conseguenza, Play Games Services non visualizzerà automaticamente l'interfaccia utente di creazione del profilo per gli utenti sul dispositivo che non hanno un profilo Play Games Services esistente.

  2. Per gestire i casi in cui un utente non è autenticato a causa di un profilo Play Games Services mancante, puoi utilizzare PlayGamesPlatform.Instance.IsAuthenticated(). Questo metodo restituisce false perché la creazione del profilo non riesce. Per risolvere il problema, avvia la procedura di creazione del profilo chiamando PlayGamesPlatform.Instance.ManuallyAuthenticate().

    
    if (!PlayGamesPlatform.Instance.IsAuthenticated()) {
      // The user is unauthenticated, likely due to a missing Play Games profile.
      // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger
      // the profile creation UI.
      PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => {
        // ...
      });
    }
    

  3. Dopo aver aggiunto il tag di soppressione, utilizza la finestra logcat per verificarne l'aggiunta. L'output di logcat contiene un messaggio simile al seguente: "Game opted out of automatic profile creation prompt (using manifest)".

Utilizzare la firma dell'app di Google Play

Google gestisce e protegge la chiave di firma della tua app utilizzando la firma dell'app di Google Play. Puoi utilizzare la firma dell'app di Google Play per firmare i file Android App Bundle di distribuzione ottimizzati. La firma dell'app di Google Play archivia la chiave di firma dell'app nell'infrastruttura sicura di Google. Per utilizzare la firma dell'app di Google Play, devi prima creare e scaricare un file AAB da Unity Editor. Poi puoi caricare il file AAB in Play Console e creare una release di test interno.

Creare un file AAB

Per creare un file AAB in Unity Editor:

  1. In Unity Editor, fai clic su File > Build settings (File > Impostazioni di build).
  2. Seleziona Build App Bundle ( Google Play ) (Crea app bundle (Google Play)).

    Per saperne di più, consulta la Guida di riferimento alle impostazioni di build di Android .

  3. Fai clic su Build (Crea).

  4. Scarica il file AAB da Unity Editor.

Creare una release di test interno

Per creare una release di test interno e aggiungere tester in Play Console:

  1. In the Google Play Console, seleziona un gioco.
  2. Vai alla pagina Testa e rilascia (Test > Test interni).
  3. Fai clic su Carica e seleziona il file AAB.
  4. Nel campo Dettagli release, inserisci un nome.
  5. Fai clic su Avanti e controlla i dettagli della release.
  6. Fai clic su Salva e pubblica.
  7. Nella scheda Tester, fai clic su Crea mailing list per aggiungere fino a 100 tester.

    Per saperne di più, consulta Test interno: consente di gestire fino a 100 tester.

  8. In Indirizzo email o URL per i feedback, inserisci un indirizzo email o un URL per fornire feedback.

  9. Fai clic su Salva.

Verificare le credenziali di firma dell'app

  1. In the Google Play Console, seleziona un gioco.
  2. Vai alla pagina Testa e rilascia (Configurazione > Firma dell'app).
  3. Verifica le credenziali di firma dell'app.

Creare ed eseguire il progetto

A questo punto puoi creare ed eseguire il progetto del gioco. Quando il gioco si avvia, vedrai il tentativo di autenticazione automatica.

Hai bisogno di un dispositivo fisico con Android e il debug USB attivato o di un emulatore in grado di eseguire il progetto sviluppato.

Recuperare i codici di autenticazione server

Per accedere alle API Google su un server web di backend per conto del giocatore attuale, devi ottenere un codice di autenticazione dall'applicazione client e passarlo all'applicazione del server web. Il codice può essere scambiato con un token di accesso per effettuare chiamate alle varie API. Per informazioni sul flusso di lavoro, vedi Accedere con Google per il web.

Per ottenere il codice di accesso lato server:

  1. Aggiungi l'ID client web per il tuo gioco in Play Console.
    1. In the Google Play Console, seleziona il tuo gioco.
    2. Nella pagina Configurazione (Crescita > Servizi per i giochi di Play > Configurazione e gestione > Configurazione), fai clic su Aggiungi credenziale.
    3. Nella pagina Aggiungi credenziale, seleziona Server di gioco.
    4. Genera un ID client OAuth 2.0.
    5. Prendi nota del valore dell'ID client. Dovrai fornire questo valore in un secondo momento.
  2. Aggiungi l'ID client web a Unity Hub.

    1. In Unity Hub, configura Google Play Games per Unity ed esegui l'autenticazione.
    2. In Unity Hub, vai a Window > Google Play Games > Setup > Android Setup (Finestra > Google Play Games > Configurazione > Configurazione Android).
    3. Inserisci il valore dell'ID client.
  3. Recupera il codice di autorizzazione server per ambiti aggiuntivi.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Configurare e aggiungere funzionalità