Eseguire la migrazione all'accesso ai servizi per i giochi di Play v2

Questa guida descrive come eseguire la migrazione del codice client dai servizi per i giochi di Play da v1 a v2.

Il nuovo SDK contiene quattro modifiche principali per aumentare il successo dell'accesso, che puoi tieni presente quanto segue:

  1. L'accesso viene attivato automaticamente all'avvio del gioco. Invece di utilizzando GoogleSignInClient dell'SDK GoogleSignIn per eseguire l'accesso, puoi usare GamesSignInClient.isAuthenticated() per recuperare il risultato dell'auto tentativo di accesso.
  2. Le classi di proprietà client non avranno più bisogno di un oggetto GoogleSignInAccount passato. Non è possibile richiedere ambiti OAuth aggiuntivi (verranno richiesti GAMES_LITE) richiesto automaticamente).
  3. I token di autenticazione vengono ora forniti GamesSignInClient.requestServerSideAccess() nei servizi per i giochi di Play l'SDK.
  4. Il metodo di disconnessione verrà rimosso e non sarà più necessario usare un account in-game per accedere o uscire dai servizi per i giochi di Play.

Inoltre, il tuo gioco sperimenterà accessi aggiuntivi a causa dell'attivazione automatica accedi all'avvio del gioco. Di conseguenza, dovresti rivedere gestione delle quote per assicurarti che il tuo gioco non superi la quota per le richieste di accesso.

Scegli come target il nuovo Repository Maven dell'SDK

Se utilizzi il sistema di compilazione Gradle, puoi farlo modificando all'artefatto com.google.android.gms:play-services-games-v2:+ in il file build.gradle del modulo. Ad esempio:

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

Inizializzare l'SDK

Inizializza l'SDK Play Giochi nel callback onCreate(..) del tuo Application corso. Ad esempio:

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

...

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

Rimuovere le chiamate di accesso e uscita

Se non specifichi ambiti aggiuntivi, la migrazione del tuo caso d'uso dovrebbe in modo diretto.

  1. Rimuovi le chiamate di accesso tramite l'API GoogleSignIn. L'accesso essere sempre eseguite al momento del lancio del gioco. Ascolta invece il risultato dell'evento tentativo di accesso automatico utilizzando GamesSignInClient.isAuthenticated().

    GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
    
    gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
      boolean isAuthenticated =
        (isAuthenticatedTask.isSuccessful() &&
         isAuthenticatedTask.getResult().isAuthenticated());
    
      if (isAuthenticated) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a
        // login button to ask  players to sign-in. Clicking it should
        // call GamesSignInClient.signIn().
      }
    });
    
  2. Rimuovi tutte le chiamate per uscire, perché la gestione dell'account è ora contenuti nelle impostazioni del sistema operativo e dell'app Play Giochi.

  3. Se il giocatore ha eseguito l'accesso, rimuovi il pulsante di accesso a Play Giochi dal tuo gioco. Se l'utente sceglie di non eseguire l'accesso all'avvio del gioco, può scegliere di continuare a mostrare un pulsante con l'icona Play Giochi e attiva la procedura di accesso con GamesSignInClient.signIn().

  4. Dopo aver verificato che l'utente abbia eseguito l'accesso, puoi recuperare l'ID giocatore per identificarlo.

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. Rimuovi la dipendenza dall'API GoogleSignIn, se non è più in uso.

Aggiorna i nomi delle classi del client

Quando crei i clienti (ad es. LeaderboardsClient o AchievementsClient) utilizza PlayGames.getFooClient() anziché Games.getFooClient().

Richiedi accesso lato server

Per richiedere l'accesso lato server, utilizza GamesSignInClient.requestServerSideAccess() anziché GoogleSignInAccount.getServerAuthCode().

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
  .requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
                           /*forceRefreshToken=*/ false)
  .addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
      String serverAuthToken = task.getResult();
      // Send authentication code to the backend game server to be
      // exchanged for an access token and used to verify the
      // player with the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

Rimuovi ambiti aggiuntivi

Con i servizi per i giochi di Play v2 non puoi richiedere ambiti aggiuntivi. Se devi comunque richiedere ambiti aggiuntivi, ti consigliamo di utilizzare SDK Accedi con Google insieme ai servizi per i giochi di Play.

Migrazione da GoogleApiClient

Per le integrazioni precedenti esistenti, il gioco potrebbe dipendere dal Variante dell'API GoogleApiClient dell'SDK dei servizi per i giochi di Play. Questo è stato ritirato a fine 2017 e sostituito da "senza connessione" clienti. Per eseguire la migrazione, puoi sostituire GoogleApiClient con un equivalente "senza connessione". Inoltre, devi seguire le indicazioni riportate in questa pagina per eseguire la migrazione del tuo gioco dalla versione 1 alla versione 2. Ecco una mappatura delle classi comuni:

com.google.android.gms.games.achievement.Achievements ->
    com.google.android.gms.games.AchievementsClient

com.google.android.gms.games.leaderboard.Leaderboard ->
    com.google.android.gms.games.LeaderboardsClient

com.google.android.gms.games.snapshot.Snapshots ->
    com.google.android.gms.games.SnapshotsClient

com.google.android.gms.games.stats.PlayerStats ->
    com.google.android.gms.games.PlayerStatsClient

com.google.android.gms.games.Players ->
    com.google.android.gms.games.PlayersClient

com.google.android.gms.games.GamesStatusCodes ->
    com.google.android.gms.games.GamesClientStatusCodes