Questa guida descrive come eseguire la migrazione del codice client dalla versione 1 di Play Games Services alla versione 2.
Il nuovo SDK contiene quattro modifiche principali per aumentare il successo degli accessi che devi conoscere:
- L'accesso viene attivato automaticamente al momento dell'avvio del gioco. Anziché
utilizzare
GoogleSignInClient
dell'SDKGoogleSignIn
per eseguire l'accesso, puoi utilizzareGamesSignInClient.isAuthenticated()
per recuperare il risultato del tentativo di accesso automatico. - Le classi Client Factory non avranno più bisogno di un oggetto
GoogleSignInAccount
tramesso. Non è possibile richiedere ambiti OAuth aggiuntivi (GAMES_LITE
verrà richiesto automaticamente). - Ora i token di autenticazione vengono forniti utilizzando
GamesSignInClient.requestServerSideAccess()
all'interno dell'SDK Play Games Services. - Il metodo di disconnessione viene rimosso e non sarà più necessario un pulsante in-game per accedere o uscire da Play Giochi.
Inoltre, al momento del lancio del gioco verranno eseguiti accessi aggiuntivi a causa dell'accesso automatico. Di conseguenza, ti consigliamo di rivedere la gestione delle quote per assicurarti che il tuo gioco non superi la quota di richieste di accesso.
Scegli come target il nuovo repository Maven dell'SDK
Se utilizzi il sistema di compilazione Gradle, puoi farlo modificando la dipendenza dall'elemento com.google.android.gms:play-services-games-v2:+
nel file build.gradle
del tuo modulo. Ad esempio:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Inizializza l'SDK
Inizializza l'SDK Play Games nel callback onCreate(..)
della tua classe Application
. Ad esempio:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Rimuovere le chiamate di accesso e di uscita
Se non specifichi ambiti aggiuntivi, la migrazione del caso d'uso dovrebbe essere semplice.
Rimuovi le chiamate di accesso utilizzando l'API GoogleSignIn. L'accesso verrà sempre eseguito al momento dell'avvio del gioco. Ascolta invece il risultato del 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(). } });
Rimuovi tutte le chiamate per uscire, poiché la gestione dell'account ora è contenuta nelle impostazioni dell'OS e dell'app Play Giochi.
Se il giocatore ha eseguito correttamente l'accesso, rimuovi il pulsante di accesso a Play Giochi dal tuo gioco. Se l'utente sceglie di non accedere al momento dell'avvio del gioco, puoi scegliere di continuare a mostrare un pulsante con l'icona di Google Play Giochi e attivare la procedura di accesso con
GamesSignInClient.signIn()
.Dopo aver verificato che l'utente ha eseguito l'accesso, puoi recuperare l'ID giocatore per identificarlo.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Rimuovi la dipendenza dall'API
GoogleSignIn
, se non è più in uso.
Aggiorna i nomi delle classi client
Quando crei i client (ad es. LeaderboardsClient
o AchievementsClient
), utilizza PlayGames.getFooClient()
anziché Games.getFooClient()
.
Richiedi l'accesso lato server
Quando richiedi 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 gli ambiti aggiuntivi
Con la versione 2 di Play Services non puoi richiedere altri ambiti. Se devi ancora richiedere ambiti aggiuntivi, ti consigliamo di utilizzare l'SDK di Accedi con Google insieme a Play Services per i giochi.
Migrazione da GoogleApiClient
Per le integrazioni esistenti precedenti, il tuo gioco potrebbe dipendere dalla variante dell'API GoogleApiClient dell'SDK dei servizi per i giochi di Play. Questo protocollo è stato
ritirato alla fine del 2017
e sostituito da client "senza connessione". Per eseguire la migrazione, puoi sostituire la classe GoogleApiClient
con un equivalente "senza connessione". Dovrai inoltre 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