Thiết lập C hoặc C++ gốc phiên bản 2

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:

  • minSdkVersion19 trở lên
  • Một compileSdkVersion từ 28 trở 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

  1. Để 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>
    
  2. 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.xml rồ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>
    
  3. 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ủ.