Pour pouvoir accéder aux fonctionnalités des services Google Play Games, votre jeu doit fournir le compte du joueur authentifié. Cette documentation explique comment mettre en œuvre une expérience d'authentification fluide dans votre jeu.
Le SDK des services Play Jeux v2 propose diverses améliorations qui augmentent le nombre d'utilisateurs authentifiés dans 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 authentifiés sans avoir à interagir avec une invite.
- Les utilisateurs n'ont plus besoin de télécharger l'application Play Jeux pour s'authentifier auprès des services Play Jeux ni pour créer un compte.
- Les utilisateurs peuvent désormais gérer leurs comptes de services Play Games 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 d'authentification 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 Play Games 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 :
Dans le fichier
AndroidManifest.xmlde 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_iden 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.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 l'authentification
Lorsque votre jeu se lance, il tente toujours d'authentifier l'utilisateur. Pour authentifier l'utilisateur, vous devez vérifier qu'il s'est bien authentifié, puis obtenir son ID de joueur.
Pour vérifier la tentative d'authentification, 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 {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
Empêcher la création automatique de profils
Vous pouvez désactiver les invites de création automatique de profils via le fichier manifeste. Ainsi, les utilisateurs ne disposant pas d'un profil services Play Games peuvent continuer à charger le jeu sans être invités à en créer un. Pour en savoir plus, consultez Options de création de profils.
Pour utiliser cette fonctionnalité, assurez-vous que les conditions suivantes sont remplies :
- Aucun profil Services de jeux Play n'existe sur les comptes Google connectés à l'appareil.
- Votre jeu est intégré au SDK des services Play Jeux
com.google.android.gms:play-services-games-v2:21.0.0ou version ultérieure.
Pour empêcher les invites de création automatique de profils, procédez comme suit :
Dans le fichier
AndroidManifest.xml, ajoutez lacom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONbalise dans l'<meta-data>élément et les attributs à l'<application>élément :<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Si cet indicateur est défini sur "true", les services Play Games sont informés que votre jeu gérera le processus de création de profils. Par conséquent, les services Play Jeux n'affichent pas automatiquement l'interface utilisateur de création de profils pour les utilisateurs de l'appareil qui ne disposent pas d'un profil Services Play Jeux.
Lorsque vous appelez une API des services Play Jeux, le
GamesClientStatusCodes.SIGN_IN_REQUIREDcode d'état indique que l'appel a échoué, car l'utilisateur n'a pas pu être authentifié automatiquement en raison de l'absence d'un profil Services Play Jeux.Ainsi, les utilisateurs ne disposant pas d'un profil services Play Games peuvent utiliser les méthodes d'authentification que vous avez implémentées sans être immédiatement invités à créer un profil services Play Games. La création de profils peut être lancée en appelant
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. } } });
Après avoir ajouté la balise de suppression, utilisez la fenêtre
logcatpour vérifier l'ajout. La sortielogcatcontient un message semblable à celui-ci : "Game opted out of automatic profile creation prompt (using manifest)" (Le jeu a désactivé l'invite de création automatique de profils [à l'aide du fichier manifeste]).