Dokumen ini membantu Anda menyiapkan project C++ untuk C atau C++ Native v2 dan memverifikasi layanan autentikasi.
Sebelum memulai
Anda harus menyiapkan Layanan game Play di Konsol Google Play.
Prasyarat aplikasi
Pastikan bahwa file build aplikasi Anda menggunakan nilai berikut:
minSdkVersiondari19atau yang lebih tinggicompileSdkVersiondari28atau yang lebih tinggi
Menyiapkan project game Anda
Selesaikan langkah-langkah berikut untuk menyiapkan project game Anda.
Mengupdate build.gradle
Di file build.gradle tingkat aplikasi, lakukan hal berikut:
Pastikan fitur build prefab diaktifkan.
Tambahkan dependensi untuk SDK Native v2 (beta):
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Berikut contohnya:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
Mengupdate CMakeLists.txt
Di file CMakeLists.txt, tambahkan kode berikut:
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)
Mengupdate AndroidManifest.xml
Untuk menentukan project ID Layanan game Play di file
AndroidManifest.xmlAnda, tambahkan baris berikut:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Buat resource string untuk project ID Anda. Hal ini memungkinkan game Anda mengakses ID pada waktu build. Untuk membuat resource, buat file
project_root/app/src/main/res/values/games-ids.xml, lalu tambahkan hal berikut:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Membangun dan menguji game Anda. Jika berhasil, saat diluncurkan, game Anda akan menampilkan perintah login atau banner login yang berhasil.
Mendapatkan ID pemain
Game Anda dapat mengakses informasi pemain untuk pemain yang diautentikasi dengan
mengambil ID pemainnya. Anda dapat mengambil ID pemain dengan memanggil
fungsi GetPlayerId, seperti yang ditunjukkan dalam contoh berikut.
#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);
}
Meluncurkan ulang perintah login
Jika pemain menolak perintah login Layanan game Play awal yang
otomatis ditampilkan saat game diluncurkan, pemain dapat berubah pikiran
selama sesi game. Anda dapat meluncurkan kembali perintah login dengan memanggil
PgsGamesSignInClient_signIn selama tidak ada pemain yang diautentikasi.
Otorisasi server game
Setelah pemain berhasil melakukan autentikasi ke Layanan game Play, klien game Anda
dapat meminta kode otorisasi server yang dapat digunakan server game backend Anda
untuk berkomunikasi secara aman dengan Layanan game Play. Hal ini memungkinkan server game Anda
mengambil, mengupdate, dan menyimpan data untuk pemain yang diautentikasi. Anda dapat
mengambil kode otorisasi server dengan memanggil
fungsi PgsGamesSignInClient_requestServerSideAccess.
Untuk mendapatkan informasi lebih lanjut, lihat panduan akses server.