In diesem Leitfaden wird beschrieben, wie du ein natives C- oder C++-Spielprojekt zur Verwendung des Play-Spieldienste v2 Native SDK und integriere das Anmeldedienst: Die Anmeldeintegration ist erforderlich, um um andere Funktionen der Play-Spieldienste zu integrieren und die Play-Spieldienste in dein Spiel zu integrieren, Back-End-Spieleserver.
Unterstützte Funktionen
Das native SDK der Play-Spieldienste v2 befindet sich in der Betaphase und unterstützt den Anmeldedienst. Andere Play-Spieldienste werden noch nicht unterstützt Funktionen.
API-Referenzdokumentation
Die Headerdateien für das SDK enthalten die Referenzdokumentation für die APIs. Die
Headerdateien befinden sich in den SDK-Dateien im Ordner include
, die sich
nachdem Sie Ihr Projekt mit dem SDK-Repository synchronisiert haben.
Voraussetzungen
Ein Spielprojekt, bei dem natives C oder C++ als primäre Programmiersprache verwendet wird.
Dein Spielprojekt und deine Entwicklungsumgebung müssen Gradle Systemeinrichtung zu erstellen.
Vorbereitung
Du musst Play-Spieldienste einrichten in Google Play Console
Spielprojekt einrichten
Führe die folgenden Schritte aus, um dein Spielprojekt einzurichten.
CMakeLists.txt aktualisieren
Fügen Sie der Datei CMakeLists.txt
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)
build.gradle aktualisieren
Gehe in der Datei build.gradle
auf App-Ebene so vor:
Achten Sie darauf, dass die Build-Funktion prefab aktiviert ist.
Fügen Sie die Abhängigkeit für das native SDK der Play-Spieldienste v2 hinzu:
com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1
Beispiel:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"
}
AndroidManifest.xml aktualisieren
Definiere in der Datei
AndroidManifest.xml
dein Play-Spieldienste-Projekt. ID. Fügen Sie dazu die folgenden Zeilen in die Datei ein:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
Stringressource erstellen für Ihre Projekt-ID. So kann Ihr Spiel bei der Build-Erstellung auf die ID zugreifen. Erstellen Sie die Datei, um die Ressource zu erstellen.
project_root/app/src/main/res/values/games-ids.xml
, und fügen Sie Folgendes hinzu:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>
Entwickeln und testen Sie Ihr Spiel. Wenn du dein Spiel erfolgreich startest, wird eine Aufforderung zur Anmeldung oder ein Banner für eine erfolgreiche Anmeldung angezeigt.
Spieler-ID abrufen
Dein Spiel kann auf Spielerinformationen eines angemeldeten Spielers zugreifen, indem es
seine Spieler-ID. Du kannst eine Spieler-ID abrufen, indem du die GetPlayerID
aufrufst
die im folgenden Beispiel gezeigt wird.
#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);
}
Starten Sie die Anmeldeaufforderung noch einmal.
Wenn ein Spieler die anfängliche Anmeldeaufforderung für die Play-Spieldienste ablehnt,
automatisch angezeigt, wenn dein Spiel veröffentlicht wird, kann der Nutzer seine Meinung ändern
während der Spielsitzung. Sie können die Anmeldeaufforderung neu starten, indem Sie
PgsGamesSignInClient_signIn
, solange keine Spieler angemeldet sind.
Gameserver-Autorisierung
Sobald sich ein Spieler in den Play-Spieldiensten erfolgreich angemeldet hat,
kann einen Serverautorisierungscode anfordern, den dein Backend-Spieleserver für Folgendes verwenden kann:
sicher mit den Play-Spieldiensten kommunizieren können. So kann Ihr Gameserver
Daten für den angemeldeten Player abrufen, aktualisieren und speichern. Sie können die
Server-Autorisierungscode durch Aufrufen der Methode
PgsGamesSignInClient_requestServerSideAccess
.
Weitere Informationen finden Sie in der Leitfaden für den Serverzugriff