Ce guide explique comment migrer votre code client depuis les services de jeux Play de v1 à v2.
Le nouveau SDK contient quatre modifications majeures permettant d'augmenter le nombre de connexions ce que vous devez savoir:
- La connexion se déclenche automatiquement au lancement du jeu. Au lieu de
à l'aide du
GoogleSignInClient
du SDK GoogleSignIn pour vous connecter, vous pouvez utiliserGamesSignInClient.isAuthenticated()
pour récupérer le résultat une tentative de connexion. - Les classes Client Factory n'ont plus besoin d'un objet
GoogleSignInAccount
. transmis. Les champs d'application OAuth supplémentaires ne peuvent pas être demandés (GAMES_LITE
sera automatiquement). - Les jetons d'authentification sont désormais fournis
GamesSignInClient.requestServerSideAccess()
dans les services de jeux Play SDK. - La méthode de déconnexion a été supprimée, et nous n'avons plus besoin d'utiliser pour vous connecter ou vous déconnecter des services de jeux Play.
De plus, votre jeu enregistrera des connexions supplémentaires grâce aux se connecter au lancement du jeu. Par conséquent, vous devez vérifier vos gestion des quotas pour vous assurer que votre jeu ne dépasse pas le quota de requêtes de connexion.
Cibler le nouveau dépôt Maven du SDK
Si vous utilisez le système de compilation Gradle, vous pouvez modifier votre
dépendance à l'artefact com.google.android.gms:play-services-games-v2:+
dans
le fichier build.gradle
de votre module. Exemple :
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Initialiser le SDK
Initialisez le SDK Play Jeux dans le rappel onCreate(..)
de la classe Application
. Exemple :
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Supprimer les appels de connexion et de déconnexion
Si vous ne spécifiez aucun champ d'application supplémentaire, la migration de votre cas d'utilisation devrait être simple.
Supprimez les appels de connexion à l'aide de l'API GoogleSignIn. Le joueur sera automatiquement connecté au lancement du jeu. À la place des appels de connexion, écoutez le résultat de la tentative de connexion automatique avec
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(). } });
Supprimez tous les appels de déconnexion, car le compte est désormais géré dans les paramètres de l'OS et de l'application Play Jeux.
Si le joueur est connecté, supprimez le bouton de connexion à Play Jeux de votre jeu. Si l'utilisateur choisit de ne pas se connecter au lancement du jeu, vous pouvez choisir de continuer à afficher un bouton avec l'icône Play Jeux et de déclencher le processus de connexion avec
GamesSignInClient.signIn()
.Après avoir vérifié que l'utilisateur est connecté, vous pouvez récupérer l'ID du joueur pour l'identifier.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Supprimez votre dépendance à l'API GoogleSignIn si elle n'est plus utilisée.
Mettre à jour les noms des classes de clients
Lorsque vous créez des clients (LeaderboardsClient
ou AchievementsClient
, par exemple), utilisez PlayGames.getFooClient()
au lieu de Games.getFooClient()
.
Demander un accès côté serveur
Lorsque vous demandez un accès côté serveur, utilisez GamesSignInClient.requestServerSideAccess()
au lieu de 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.
}
});
Supprimer les champs d'application supplémentaires
Avec les services de jeux Play v2, vous ne pouvez pas demander de champs d'application supplémentaires. Si vous avez besoin de cette fonctionnalité, nous vous recommandons d'utiliser le SDK Google Sign-In en plus des services de jeux Play.
Migration depuis GoogleApiClient
Pour les anciennes intégrations, il se peut que votre jeu dépende de la variante d'API GoogleApiClient du SDK des services de jeux Play. C'était
obsolète depuis fin 2017
et remplacé par "sans connexion" clients. Pour effectuer la migration, vous pouvez remplacer la classe GoogleApiClient
par un équivalent "sans connexion". Ensuite, vous
suivez les instructions de cette page pour migrer votre jeu de la version 1 à la version 2.
Voici un mappage des classes courantes:
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