Z tego przewodnika dowiesz się, jak skonfigurować natywny projekt gry w C lub C++, aby używać Natywny pakiet SDK usług gier Play w wersji 2 i zintegruj Usługa logowania. Aby można było skorzystać z integracji logowania, do integracji innych funkcji usług gier Play. z grą i do integracji usług gier Play serwera gry backendu.
Obsługiwane funkcje
Natywny pakiet SDK usług gier Play w wersji 2 jest w wersji beta i obsługuje tylko z usługi logowania. Nie obsługuje jeszcze innych usług gier Play funkcje.
dokumentacja API
Pliki nagłówka pakietu SDK zawierają dokumentację interfejsów API.
pliki nagłówka znajdują się w folderze include
w plikach SDK, które są
dostępne po zsynchronizowaniu projektu z repozytorium SDK.
Wymagania
Projekt gry, który jako główny język programowania używa natywnego języka C lub C++.
Projekt gry i środowisko programistyczne muszą mieć plik Gradle trzeba skonfigurować system kompilacji.
Zanim rozpoczniesz
Musisz skonfigurować usługi gier Play w Konsola Google Play.
Konfigurowanie projektu gry
Aby skonfigurować projekt gry, wykonaj te czynności.
Zaktualizuj plik CMakeLists.txt
W pliku CMakeLists.txt
dodaj ten kod:
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)
Aktualizacja pliku build.gradle
W pliku build.gradle
na poziomie aplikacji wykonaj te czynności:
Upewnij się, że funkcja prefab kompilacji jest włączona.
Dodaj zależność z natywnym pakietem SDK usług gier Play w wersji 2:
com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1
Oto przykład:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"
}
Zaktualizuj plik AndroidManifest.xml
W pliku
AndroidManifest.xml
zdefiniuj projekt usług gier Play ID. Aby to zrobić, dodaj te wiersze:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
Utwórz zasób ciągu znaków identyfikatora projektu. Dzięki temu gra może uzyskiwać dostęp do identyfikatora w momencie kompilacji. Aby utworzyć zasób, utwórz plik
project_root/app/src/main/res/values/games-ids.xml
, i dodaj następujące elementy:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>
Stwórz i przetestuj grę. Jeśli gra się uda, po uruchomieniu wyświetli prośbę o zalogowanie się lub baner z prośbą o zalogowanie się.
Uzyskiwanie identyfikatora gracza
Twoja gra może uzyskać dostęp do informacji o zalogowanym graczu, pobierając
identyfikator gracza. Aby uzyskać identyfikator gracza, wywołaj GetPlayerID
, co zostało zaprezentowane w przykładzie poniżej.
#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);
}
Ponownie uruchom prośbę o zalogowanie się
Jeśli gracz odrzuci prośbę o zalogowanie się w usługach gier Play,
automatycznie wyświetlane po uruchomieniu gry, użytkownicy mogą zmienić zdanie
podczas sesji gry. Aby ponownie uruchomić prośbę o zalogowanie się, zadzwoń
PgsGamesSignInClient_signIn
pod warunkiem, że nie jest zalogowany żaden gracz.
Autoryzacja serwera gry
Gdy gracz zaloguje się w usługach gier Play, klient Twojej gry
może zażądać kodu autoryzacji serwera, którego może użyć serwer gier backendu
bezpiecznie komunikować się z usługami gier Play, Dzięki temu serwer gry będzie mógł
pobierać, aktualizować i przechowywać dane zalogowanego odtwarzacza. Możesz pobrać
przez wywołanie metody
PgsGamesSignInClient_requestServerSideAccess
.
Więcej informacji: przewodnika po dostępie do serwera.