Tài liệu này giúp bạn thiết lập dự án C++ cho C hoặc C++ gốc phiên bản 2 và xác minh dịch vụ xác thực.
Trước khi bắt đầu
Bạn phải thiết lập Dịch vụ trò chơi của Google Play trong Google Play Console.
Điều kiện tiên quyết đối với ứng dụng
Đảm bảo rằng tệp bản dựng của ứng dụng sử dụng các giá trị sau:
minSdkVersionlà19trở lên- Một
compileSdkVersiontừ28trở lên
Thiết lập dự án trò chơi
Hãy hoàn tất các bước sau đây để thiết lập dự án trò chơi của bạn.
Cập nhật build.gradle
Trong tệp build.gradle ở cấp ứng dụng, hãy làm như sau:
Đảm bảo bạn đã bật tính năng bản dựng prefab.
Thêm phần phụ thuộc cho SDK gốc phiên bản 2 (beta):
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Ví dụ:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
Cập nhật CMakeLists.txt
Trong tệp CMakeLists.txt, hãy thêm mã sau đây:
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)
Cập nhật AndroidManifest.xml
Để xác định mã dự án Dịch vụ trò chơi của Play trong tệp
AndroidManifest.xml, hãy thêm các dòng sau:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Tạo tài nguyên chuỗi cho mã dự án. Bước này cho phép trò chơi của bạn sử dụng mã dự án trong thời gian xây dựng. Để tạo tài nguyên, hãy tạo tệp
project_root/app/src/main/res/values/games-ids.xmlrồi thêm đoạn mã sau đây:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Tạo và thử nghiệm trò chơi của bạn. Nếu thành công, khi bạn khởi chạy trò chơi, trò chơi sẽ hiển thị lời nhắc đăng nhập hoặc biểu ngữ đăng nhập thành công.
Lấy mã nhận dạng người chơi
Trò chơi của bạn có thể truy cập vào thông tin người chơi của một người chơi đã xác thực bằng cách truy xuất mã nhận dạng người chơi của họ. Bạn có thể truy xuất mã nhận dạng người chơi bằng cách gọi hàm GetPlayerId, như minh hoạ trong ví dụ sau.
#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);
}
Chạy lại lời nhắc đăng nhập
Nếu lúc đầu người chơi từ chối lời nhắc đăng nhập vào Dịch vụ trò chơi của Play (lời nhắc này tự động hiện ra khi trò chơi khởi chạy), thì người chơi đó có thể thay đổi ý định trong phiên chơi. Bạn có thể chạy lại lời nhắc đăng nhập bằng cách gọi PgsGamesSignInClient_signIn, miễn là không có người chơi nào được xác thực.
Uỷ quyền máy chủ trò chơi
Sau khi người chơi xác thực thành công với Dịch vụ trò chơi của Play, ứng dụng trò chơi của bạn có thể yêu cầu mã uỷ quyền máy chủ mà máy chủ phụ trợ của trò chơi có thể dùng để giao tiếp an toàn với Dịch vụ trò chơi của Play. Nhờ đó, máy chủ trò chơi có thể truy xuất, cập nhật và lưu trữ dữ liệu cho người chơi đã xác thực. Bạn có thể truy xuất mã uỷ quyền máy chủ bằng cách gọi hàm PgsGamesSignInClient_requestServerSideAccess.
Để biết thêm thông tin, hãy xem hướng dẫn truy cập máy chủ.