Autenticazione della piattaforma per i giochi per Android

Per accedere alle funzionalità dei servizi per i giochi di Google Play, il tuo gioco deve fornire l'account del giocatore autenticato. Questa documentazione descrive come implementare un'esperienza di autenticazione fluida nel tuo gioco.

L'SDK Play Games Services v2 introduce una serie di miglioramenti che aumentano il numero di utenti autenticati nel tuo gioco e semplificano lo sviluppo:

  • Miglioramenti per gli utenti:
    • Dopo aver selezionato un account predefinito, gli utenti vengono autenticati senza dover interagire con una richiesta.
    • Gli utenti non devono più scaricare l'app Play Giochi per l'autenticazione con i servizi per i giochi di Play o per creare un nuovo account.
    • Ora gli utenti possono gestire i propri account dei servizi per i giochi di Play per più giochi da un'unica pagina.
  • Miglioramenti per gli sviluppatori:
  • Il codice client non deve più gestire il flusso di autenticazione o disconnessione, in quanto l'accesso viene attivato automaticamente all'avvio del gioco e la gestione dell'account viene gestita nelle impostazioni del sistema operativo.

Nuova integrazione client

Questa sezione mostra come eseguire una nuova integrazione client con Play Games Services Sign In v2.

Aggiungi la dipendenza

Aggiungi la dipendenza dell'SDK Play Game Services al file build.gradle della tua app al livello radice. Se utilizzi Gradle, puoi aggiungere o aggiornare la dipendenza nel seguente modo:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Definisci l'ID progetto

Per aggiungere l'ID progetto dell'SDK Play Game Services alla tua app, completa i seguenti passaggi:

  1. Nel file AndroidManifest.xml dell'app, aggiungi l'elemento e gli attributi <meta-data> seguenti all'elemento <application>:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    Definisci il riferimento alla risorsa stringa @string/game_services_project_id utilizzando l'ID progetto dei servizi per i giochi del tuo gioco come valore. L'ID progetto dei servizi per i giochi si trova sotto il nome del gioco nella pagina Configurazione di Google Play Console.

  2. Nel file res/values/strings.xml, aggiungi un riferimento alla risorsa stringa e imposta l'ID progetto come valore. In Google Play Console, puoi trovare l'ID progetto sotto il nome del gioco nella pagina Configurazione. Ad esempio:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

Inizializza l'SDK

Inizializza l'SDK Play Giochi nel callback onCreate(..) della classe Application.

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

Ottenere il risultato dell'autenticazione

All'avvio del gioco, viene sempre eseguito un tentativo di autenticazione dell'utente. Per autenticare l'utente, devi verificare che abbia eseguito l'autenticazione e poi recuperare il suo ID giocatore.

Per verificare il tentativo di autenticazione, chiama GamesSignInClient.isAuthenticated() e utilizza addOnCompleteListener per recuperare i risultati. Ad esempio:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Se l'utente sceglie di non autenticarsi all'avvio del gioco, è consigliabile continuare a mostrare un pulsante con l'icona di Play Giochi o presentare all'utente una schermata di accesso con un pulsante con l'icona di Play Giochi come una delle opzioni di autenticazione e tentare di autenticare nuovamente l'utente chiamando GamesSignInClient.signIn() se l'utente preme il pulsante. Dopo aver verificato che l'utente è autenticato, puoi recuperare l'ID giocatore per identificarlo. Ad esempio:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);