In diesem Dokument erfahren Sie, wie Sie Ihr C++-Projekt für v2 Native C oder C++ einrichten und den Authentifizierungsdienst überprüfen.
Vorbereitung
Sie müssen die Play-Spieldienste in der Google Play Console einrichten.
Voraussetzungen für Apps
Achten Sie darauf, dass in der Build-Datei Ihrer App die folgenden Werte verwendet werden:
- Ein
minSdkVersionvon mindestens19 - Ein
compileSdkVersionvon mindestens28
Spielprojekt einrichten
Führen Sie die folgenden Schritte aus, um Ihr Spielprojekt einzurichten.
Datei build.gradle aktualisieren
Führen Sie in der Datei build.gradle auf App-Ebene die folgenden Schritte aus:
Prüfen Sie, ob die Build-Funktion Prefab aktiviert ist.
Fügen Sie die Abhängigkeit für das Native SDK v2 (Beta) hinzu:
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Beispiel:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
CMakeLists.txt aktualisieren
Fügen Sie in Ihrer CMakeLists.txt-Datei den folgenden Code hinzu:
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)
AndroidManifest.xml aktualisieren
Fügen Sie die folgenden Zeilen hinzu, um die Projekt-ID für Play-Spieldienste in der Datei
AndroidManifest.xmlzu definieren:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Erstellen Sie eine String-Ressource für Ihre Projekt-ID. So kann Ihr Spiel zur Build-Zeit auf die ID zugreifen. Erstellen Sie die Datei
project_root/app/src/main/res/values/games-ids.xmlund fügen Sie Folgendes hinzu, um die Ressource zu erstellen:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Erstellen und testen Sie Ihr Spiel. Wenn alles geklappt hat, wird beim Starten des Spiels eine Anmeldeaufforderung oder ein Banner mit der Meldung angezeigt, dass die Anmeldung erfolgreich war.
Spieler-ID abrufen
Ihr Spiel kann auf Spielerinformationen für einen authentifizierten Spieler zugreifen, indem es seine Spieler-ID abruft. Sie können eine Spieler-ID abrufen, indem Sie die Funktion GetPlayerId aufrufen, wie im folgenden Beispiel gezeigt.
#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);
}
Anmeldeaufforderung noch einmal starten
Wenn ein Spieler die erste Aufforderung zur Anmeldung bei den Play-Spieldiensten ablehnt, die beim Start Ihres Spiels automatisch angezeigt wird, kann er seine Meinung während der Spielsitzung ändern. Sie können den Anmelde-Prompt noch einmal aufrufen, indem Sie PgsGamesSignInClient_signIn aufrufen, solange keine Spieler authentifiziert sind.
Gameserver-Autorisierung
Sobald sich ein Spieler erfolgreich bei den Play Games-Diensten authentifiziert hat, kann der Spielclient einen Serverautorisierungscode anfordern, mit dem Ihr Backend-Spielserver sicher mit den Play Games-Diensten kommunizieren kann. So kann Ihr Spielserver Daten für den authentifizierten Spieler abrufen, aktualisieren und speichern. Sie können den Serverautorisierungscode abrufen, indem Sie die Funktion PgsGamesSignInClient_requestServerSideAccess aufrufen.
Weitere Informationen finden Sie im Leitfaden für den Serverzugriff.