Connexion pour les jeux Android

Pour pouvoir accéder aux fonctionnalités des services de jeux Google Play, votre jeu doit fournir le compte du joueur connecté. Cette documentation explique comment mettre en œuvre une expérience de connexion fluide dans votre jeu.

Le SDK des services de jeux Play v2 propose diverses améliorations qui augmentent le nombre d'utilisateurs connectés à votre jeu et facilitent le développement :

  • Améliorations pour les utilisateurs :
    • Après avoir sélectionné un compte par défaut, les utilisateurs sont connectés sans avoir à interagir avec une invite.
    • Les utilisateurs n'ont plus besoin de télécharger l'application Play Jeux pour se connecter aux services de jeux Play ni pour créer un compte.
    • Les utilisateurs peuvent désormais gérer le compte de leurs services de jeux Play pour plusieurs jeux à partir d'une seule page.
  • Améliorations pour les développeurs :
    • Le code client n'a plus besoin de gérer le flux de connexion ou de déconnexion, car la connexion est automatiquement déclenchée au démarrage du jeu, tandis que la gestion du compte a lieu dans les paramètres du système d'exploitation.

Intégration d'un nouveau client

Cette section explique comment intégrer un nouveau client avec les services de jeux Play Sign-In v2.

Ajouter la dépendance

Ajoutez la dépendance du SDK des services de jeux Play au fichier build.gradle racine de votre application. Si vous utilisez Gradle, vous pouvez ajouter ou mettre à jour la dépendance comme suit :

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

Définir l'ID du projet

Pour ajouter l'ID de projet du SDK des services de jeux Play à votre application, procédez comme suit :

  1. Dans le fichier AndroidManifest.xml de votre application, ajoutez l'élément <meta-data> et les attributs suivants à l'élément <application> :

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    Définissez la référence de la ressource de chaîne @string/game_services_project_id en indiquant l'ID de projet des services de jeux correspondant à votre jeu. L'ID de projet des services de jeux se trouve sous le nom de votre jeu sur la page Configuration de la Google Play Console.

  2. Dans le fichier res/values/strings.xml, ajoutez une référence de ressource de chaîne et définissez l'ID du projet comme valeur. Dans Google Play Console, vous trouverez l'ID de votre projet sous le nom de votre jeu sur la page Configuration. Exemple :

    <!-- 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>
    

Initialiser le SDK

Initialisez le SDK Play Jeux dans le rappel onCreate(..) de la classe Application.

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

...

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

Obtenir le résultat de connexion

Lorsque votre jeu se lance, il tente toujours de connecter l'utilisateur. Pour authentifier l'utilisateur, vous devez vérifier qu'il s'est bien connecté, puis obtenir son ID de joueur.

Pour vérifier la tentative de connexion, appelez GamesSignInClient.isAuthenticated() et utilisez addOnCompleteListener pour récupérer les résultats. Exemple :

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().
  }
});

Si l'utilisateur choisit de ne pas se connecter au lancement du jeu, vous pouvez continuer à afficher un bouton avec l'icône Play Jeux et réessayer de le connecter en appelant GamesSignInClient.signIn() si l'utilisateur appuie sur ce bouton.

Après avoir vérifié que l'utilisateur est connecté, vous pouvez récupérer l'ID du joueur pour l'identifier. Exemple :

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);