Ce document vous aide à configurer votre projet C++ pour la version 2 de Native C ou C++ et à valider le service d'authentification.
Avant de commencer
Vous devez configurer les services de jeux Play dans la Google Play Console.
Conditions requises pour l'application
Assurez-vous que le fichier de compilation de votre application utilise les valeurs suivantes :
minSdkVersiond'au moins19compileSdkVersionégal à28ou plus
Configurer votre projet de jeu
Pour configurer votre projet de jeu, procédez comme suit :
Mettre à jour le fichier build.gradle
Dans le fichier build.gradle au niveau de l'application, procédez comme suit :
Assurez-vous que la fonctionnalité de compilation prefab est activée.
Ajoutez la dépendance pour la version 2 du SDK natif (bêta) :
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Exemple :
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
Mettre à jour le fichier CMakeLists.txt
Dans le fichier CMakeLists.txt, ajoutez le code suivant :
find_package(com.google.android.gms.games.v2.c REQUIRED CONFIG)
// link games_static for -DANDROID_STL=c++_static or default
// link games_shared for -DANDROID_STL=c++_shared
target_link_libraries(
app PUBLIC com.google.android.gms.games.v2.c::games_static)
Mettre à jour le fichier AndroidManifest.xml
Pour définir l'ID de votre projet de services de jeux Play dans votre fichier
AndroidManifest.xml, ajoutez les lignes suivantes :<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Créez une ressource de chaîne pour l'ID de votre projet. Votre jeu pourra ainsi accéder à l'ID au moment de la compilation. Pour générer la ressource, créez le fichier
project_root/app/src/main/res/values/games-ids.xmlet ajoutez les éléments suivants :<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Créez et testez votre jeu. Si l'opération réussit, lorsque vous lancez le jeu, une invite de connexion ou une bannière confirmant que la connexion a réussi s'affiche.
Obtenir l'ID du joueur
Votre jeu peut accéder aux informations d'un joueur authentifié en récupérant son ID. Pour récupérer l'ID d'un joueur, appelez la fonction GetPlayerId, comme illustré dans l'exemple suivant.
#include <assert.h>
#include "gni/gni.h"
#include "gni/gni_task.h"
#include "pgs/pgs_play_games.h"
#include "pgs/pgs_players_client.h"
// A callback for a GniTask returned from PgsPlayersClient_getCurrentPlayerId.
void OnGetCurrentPlayerIdCompleteCallback(GniTask *task, void *user_data) {
if (!GniTask_isSuccessful(task)) {
const char *error_message = nullptr;
GniTask_getErrorMessage(task, &error_message);
// Log error message here.
GniString_destroy(error_message);
GniTask_destroy(task);
return;
}
const char *result = nullptr;
PgsPlayersClient_getCurrentPlayerId_getResult(task, &result);
// Log player ID here.
GniString_destroy(result);
GniTask_destroy(task);
}
// Gets the player ID.
void GetPlayerId(jobject main_activity) {
static const PgsPlayersClient *players_client =
PgsPlayGames_getPlayersClient(main_activity);
GniTask *get_current_player_id_task =
PgsPlayersClient_getCurrentPlayerId(players_client);
assert(get_current_player_id_task != nullptr);
GniTask_addOnCompleteCallback(get_current_player_id_task,
OnGetCurrentPlayerIdCompleteCallback,
nullptr);
}
// Entry point for our test app
void TestPGSNative(JNIEnv *env, jobject main_activity) {
JavaVM *java_vm;
env->GetJavaVM(&java_vm);
GniCore_init(java_vm, main_activity);
GetPlayerId(main_activity);
}
Relancer l'invite de connexion
Si un joueur refuse l'invite initiale de connexion aux services de jeux Play qui s'affiche automatiquement au lancement du jeu, il peut changer d'avis pendant la session. Pour relancer l'invite de connexion, vous pouvez appeler PgsGamesSignInClient_signIn si aucun joueur n'est authentifié.
Autorisation du serveur de jeu
Une fois qu'un joueur s'est authentifié auprès des services de jeux Play, votre client de jeu peut demander un code d'autorisation du serveur, que votre serveur de jeu backend peut utiliser afin de communiquer de manière sécurisée avec les services de jeux Play. Le serveur de jeu pourra ainsi récupérer, mettre à jour et stocker les données du joueur authentifié. Pour obtenir le code d'autorisation du serveur, appelez la fonction PgsGamesSignInClient_requestServerSideAccess.
Pour en savoir plus, consultez le guide d'accès au serveur.