이 문서는 v2 네이티브 C 또는 C++용 C++ 프로젝트를 설정하고 인증 서비스를 확인하는 데 도움이 됩니다.
시작하기 전에
Google Play Console에서 Play 게임즈 서비스를 설정해야 합니다.
앱 기본 요건
앱의 빌드 파일이 다음 값을 사용하는지 확인합니다.
minSdkVersion19이상compileSdkVersion28이상
게임 프로젝트 설정
다음 단계에 따라 게임 프로젝트를 설정할 수 있습니다.
build.gradle 업데이트
앱 수준 build.gradle 파일에서 다음을 실행합니다.
prefab 빌드 기능이 사용 설정되어 있는지 확인합니다.
v2 네이티브 SDK (베타)의 종속 항목을 추가합니다.
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
예를 들면 다음과 같습니다.
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
CMakeLists.txt 업데이트
CMakeLists.txt 파일에서 다음 코드를 추가하세요.
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 업데이트
AndroidManifest.xml파일에서 Play 게임즈 서비스 프로젝트 ID를 정의하려면 다음 줄을 추가합니다.<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>프로젝트 ID용 문자열 리소스를 만듭니다. 이렇게 하면 빌드 시간에 게임에서 ID에 액세스할 수 있습니다. 리소스를 만들려면
project_root/app/src/main/res/values/games-ids.xml파일을 만들고 다음을 추가합니다.<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>게임을 빌드하고 테스트합니다. 성공하는 경우 게임 실행 시 게임에 로그인 메시지 또는 로그인 성공 배너가 표시됩니다.
플레이어 ID 가져오기
게임에서 플레이어 ID를 검색하여 인증된 플레이어의 플레이어 정보에 액세스할 수 있습니다. 다음 예와 같이 GetPlayerId 함수를 호출하여 플레이어 ID를 검색할 수 있습니다.
#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);
}
로그인 메시지 다시 실행
플레이어가 게임 실행 시 자동으로 표시되는 Play 게임즈 서비스 초기 로그인 메시지를 거부했다가 게임 세션 중에 마음이 바뀔 수도 있습니다. 인증된 플레이어가 없는 경우 PgsGamesSignInClient_signIn을 호출하여 로그인 메시지를 다시 실행할 수 있습니다.
게임 서버 승인
플레이어가 Play 게임즈 서비스에 인증되면 게임 클라이언트는 백엔드 게임 서버가 Play 게임즈 서비스와 안전하게 통신하는 데 사용할 수 있는 서버 승인 코드를 요청할 수 있습니다. 그러면 게임 서버가 인증된 플레이어의 데이터를 검색하고 업데이트 및 저장할 수 있습니다. PgsGamesSignInClient_requestServerSideAccess 함수를 호출하여 서버 승인 코드를 검색할 수 있습니다.
자세한 내용은 서버 액세스 가이드를 참고하세요.