Questo documento ti aiuta a configurare il progetto C++ per Native C o C++ v2 e a verificare il servizio di autenticazione.
Prima di iniziare
Devi configurare i servizi per i giochi di Play in Google Play Console.
Prerequisiti per le app
Assicurati che il file di build dell'app utilizzi i seguenti valori:
minSdkVersiondi19o superiorecompileSdkVersiondi28o superiore
Configurare il progetto di gioco
Completa i seguenti passaggi per configurare il progetto di gioco.
Aggiorna build.gradle
Nel file build.gradle a livello di app:
Assicurati che la funzionalità di creazione di prefabbricati sia attiva.
Aggiungi la dipendenza per l'SDK nativo v2 (beta):
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Ecco un esempio:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
Aggiorna CMakeLists.txt
Nel file CMakeLists.txt, aggiungi il seguente codice:
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)
Aggiorna AndroidManifest.xml
Per definire l'ID progetto di Play Game Services nel file
AndroidManifest.xml, aggiungi le seguenti righe:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Crea una risorsa stringa per l'ID progetto. In questo modo, il gioco può accedere all'ID in fase di compilazione. Per creare la risorsa, crea il file
project_root/app/src/main/res/values/games-ids.xmle aggiungi quanto segue:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Crea e testa il tuo gioco. Se l'operazione va a buon fine, all'avvio del gioco viene visualizzato un prompt di accesso o un banner di accesso riuscito.
Recuperare l'ID giocatore
Il tuo gioco può accedere alle informazioni del giocatore per un giocatore autenticato recuperando il suo ID giocatore. Puoi recuperare un ID giocatore chiamando la funzione GetPlayerId, come mostrato nell'esempio seguente.
#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);
}
Riavviare la richiesta di accesso
Se un giocatore rifiuta la richiesta di accesso iniziale a Play Games Services
visualizzata automaticamente all'avvio del gioco, potrebbe cambiare idea
durante la sessione di gioco. Puoi riavviare la richiesta di accesso chiamando
PgsGamesSignInClient_signIn finché non sono autenticati giocatori.
Autorizzazione del server di gioco
Una volta che un giocatore si autentica correttamente ai servizi per i giochi di Play, il client di gioco può richiedere un codice di autorizzazione del server che il server di gioco di backend può utilizzare per comunicare in modo sicuro con i servizi per i giochi di Play. In questo modo, il server di gioco
può recuperare, aggiornare e archiviare i dati del giocatore autenticato. Puoi recuperare il codice di autorizzazione del server chiamando la funzione PgsGamesSignInClient_requestServerSideAccess.
Per ulteriori informazioni, consulta la guida all'accesso al server.