Per accedere alle 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 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 un prompt.
- Gli utenti non devono più scaricare l'app Play Giochi per autenticarsi con Play Games Services o creare un nuovo account.
- Ora gli utenti possono gestire i propri account Play Games Services per più giochi da un'unica pagina.
- Miglioramenti per gli sviluppatori:
- Il codice client non deve più gestire il flusso di autenticazione o di uscita, poiché 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:
Nel file
AndroidManifest.xmldell'app, aggiungi il seguente elemento<meta-data>e gli attributi 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_idutilizzando 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.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);
}
Recupera 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().
}
});
Impedisci 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:
- Non esiste alcun profilo Play Games Services in nessuno degli Account Google con cui è stato eseguito l'accesso sul dispositivo.
- Il tuo gioco è integrato con l'SDK Play Games Services
com.google.android.gms:play-services-games-v2:21.0.0o versioni successive.
Per impedire i prompt di creazione del profilo attivati automaticamente, completa i seguenti passaggi:
Nel file
AndroidManifest.xml, aggiungi ilcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONtag 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.
Quando chiami un'API Play Games Services, il
GamesClientStatusCodes.SIGN_IN_REQUIREDcodice di stato indica che la chiamata non è riuscita perché l'utente non è stato autenticato automaticamente a causa dell'assenza di un profilo Play Games ServicesIn questo modo, gli utenti senza un profilo Play Games Services possono procedere con i metodi di autenticazione implementati senza che venga chiesto loro immediatamente di creare un profilo Play Games Services. La creazione del profilo può essere avviata chiamando
GamesSignInService.signin().import com.google.android.gms.games.PlayGames; ... // Get the achievements client using Play Games services. AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity()); achievementsClient.getAchievementsIntent() .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { int statusCode = ((ApiException) exception).getStatusCode(); if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) { // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services. // Call GamesSignInService.signin() to prompt for // authentication at a suitable time which will trigger the // profile creation UI. // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status. } } });
Dopo aver aggiunto il tag di soppressione, utilizza la finestra
logcatper verificarne l'aggiunta. L'outputlogcatcontiene un messaggio simile al seguente: "Game opted out of automatic profile creation prompt (using manifest)".