Autenticazione della piattaforma per i giochi per Android

Per accedere alla funzionalità di Google Play Games Services, il tuo gioco deve fornire l'account del giocatore autenticato. Questa documentazione descrive come implementare un'esperienza di autenticazione senza interruzioni nel tuo gioco.

L'SDK dei servizi per i giochi di Play 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 autenticarsi con i servizi per i giochi di Play o 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 l'accesso v2 dei servizi per i giochi di Play.

Aggiungi la dipendenza

Aggiungi la dipendenza dell'SDK dei servizi per i giochi di Play al file build.gradle a livello di root della tua app. 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 SDK dei servizi per i giochi di Play alla tua app, completa i seguenti passaggi:

  1. Nel file AndroidManifest.xml dell'app, aggiungi i seguenti elementi e attributi <meta-data> 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 String @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 Games 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

Quando il gioco viene avviato, tenta sempre di autenticare l'utente. Per autenticare l'utente, devi verificare che l'autenticazione sia andata a buon fine e poi recuperare il suo ID giocatore.

Per verificare il tentativo di autenticazione, chiama il numero 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()
  }
);