Bu belge, C++ projenizi v2 Native C veya C++ için ayarlamanıza ve kimlik doğrulama hizmetini doğrulamanıza yardımcı olur.
Başlamadan önce
Google Play Console'da Play Games Hizmetleri'ni ayarlamanız gerekir.
Uygulama ön koşulları
Uygulamanızın derleme dosyasında aşağıdaki değerlerin kullanıldığından emin olun:
19veya daha yüksek birminSdkVersion28veya daha yüksek bircompileSdkVersion
Oyun projenizi oluşturma
Oyun projenizi oluşturmak için aşağıdaki adımları tamamlayın.
build.gradle dosyasını güncelleme
Uygulama düzeyindeki build.gradle dosyanızda şunları yapın:
Prefabrik yapı özelliğinin etkinleştirildiğinden emin olun.
v2 Native SDK'sının (beta) bağımlılığını ekleyin:
com.google.android.gms:play-services-games-v2-native-c-1.0.0-beta01
Aşağıda bununla ilgili bir örnek verilmiştir:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
CMakeLists.txt dosyasını güncelleme
CMakeLists.txt dosyanıza aşağıdaki kodu ekleyin:
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 dosyasını güncelleyin
AndroidManifest.xmldosyanızda Play Games Hizmetleri proje kimliğinizi tanımlamak için aşağıdaki satırları ekleyin:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Proje kimliğiniz için bir dize kaynağı oluşturun. Bu sayede oyununuz, derleme sırasında kimliğe erişebilir. Kaynağı oluşturmak için dosyayı oluşturun
project_root/app/src/main/res/values/games-ids.xml, ve aşağıdakileri ekleyin:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Oyununuzu oluşturun ve test edin. Başarılı olursa oyununuzu başlattığınızda oturum açma istemi veya başarılı oturum açma banner'ı gösterilir.
Oyuncu kimliğini alma
Oyununuz, kimliği doğrulanmış bir oyuncunun oyuncu kimliğini alarak oyuncu bilgilerine erişebilir. Aşağıdaki örnekte gösterildiği gibi, GetPlayerId işlevini çağırarak oyuncu kimliğini alabilirsiniz.
#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);
}
Oturum açma istemini yeniden başlatma
Bir oyuncu, oyununuz başlatıldığında otomatik olarak gösterilen ilk Google Play Games Hizmetleri oturum açma istemini reddederse oyun oturumu sırasında fikrini değiştirebilir. Hiçbir oyuncunun kimliği doğrulanmadığı sürece PgsGamesSignInClient_signIn işlevini çağırarak oturum açma istemini yeniden başlatabilirsiniz.
Oyun sunucusu yetkilendirmesi
Bir oyuncu Play Games Hizmetleri'nde kimliğini başarıyla doğruladıktan sonra oyun istemciniz, arka uç oyun sunucunuzun Play Games Hizmetleri ile güvenli bir şekilde iletişim kurmak için kullanabileceği bir sunucu yetkilendirme kodu isteyebilir. Bu sayede oyun sunucunuz, kimliği doğrulanmış oyuncunun verilerini alabilir, güncelleyebilir ve depolayabilir. PgsGamesSignInClient_requestServerSideAccess işlevini çağırarak sunucu yetkilendirme kodunu alabilirsiniz.
Daha fazla bilgi için sunucu erişimi kılavuzuna bakın.