راه‌اندازی نسخه ۲ زبان برنامه‌نویسی سی یا سی‌پلاس‌پلاس نیتیو

این سند به شما کمک می‌کند تا پروژه ++C خود را برای نسخه ۲ زبان برنامه‌نویسی Native C یا ++C تنظیم کنید و سرویس احراز هویت را تأیید کنید.

قبل از شروع

شما باید سرویس‌های بازی‌های Play را در کنسول Google Play تنظیم کنید .

پیش‌نیازهای برنامه

مطمئن شوید که فایل ساخت برنامه شما از مقادیر زیر استفاده می‌کند:

  • minSdkVersion از 19 یا بالاتر
  • یک compileSdkVersion با 28 یا بالاتر

پروژه بازی خود را تنظیم کنید

برای راه‌اندازی پروژه بازی خود، مراحل زیر را انجام دهید.

به‌روزرسانی build.gradle

در فایل build.gradle سطح برنامه خود، موارد زیر را انجام دهید:

  • مطمئن شوید که قابلیت ساخت پیش‌ساخته فعال است.

  • وابستگی مربوط به 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

  1. برای تعریف شناسه پروژه Play Games Services خود در فایل AndroidManifest.xml ، خطوط زیر را اضافه کنید:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    
  2. یک منبع رشته‌ای برای شناسه پروژه خود ایجاد کنید. این به بازی شما اجازه می‌دهد تا در زمان ساخت به شناسه دسترسی داشته باشد. برای ایجاد منبع، فایل 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>
    
  3. بازی خود را بسازید و آزمایش کنید. در صورت موفقیت، هنگام اجرای بازی، بازی یک اعلان ورود یا یک بنر ورود موفق را نمایش می‌دهد.

دریافت شناسه بازیکن

بازی شما می‌تواند با بازیابی شناسه بازیکن، به اطلاعات بازیکن احراز هویت شده دسترسی پیدا کند. می‌توانید شناسه بازیکن را با فراخوانی تابع GetPlayerId ، همانطور که در مثال زیر نشان داده شده است، بازیابی کنید.

#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 Games Services را که به طور خودکار هنگام اجرای بازی شما نمایش داده می‌شود، رد کند، ممکن است در طول جلسه بازی نظر خود را تغییر دهد. تا زمانی که هیچ بازیکنی احراز هویت نشده باشد، می‌توانید با فراخوانی PgsGamesSignInClient_signIn درخواست ورود را دوباره اجرا کنید.

مجوز سرور بازی

پس از اینکه یک بازیکن با موفقیت در سرویس‌های بازی‌های Play احراز هویت شد، کلاینت بازی شما می‌تواند یک کد مجوز سرور درخواست کند که سرور بازی backend شما می‌تواند از آن برای برقراری ارتباط ایمن با سرویس‌های بازی‌های Play استفاده کند. این به سرور بازی شما اجازه می‌دهد تا داده‌ها را برای بازیکن احراز هویت شده بازیابی، به‌روزرسانی و ذخیره کند. می‌توانید کد مجوز سرور را با فراخوانی تابع PgsGamesSignInClient_requestServerSideAccess بازیابی کنید.

برای اطلاعات بیشتر، به راهنمای دسترسی به سرور مراجعه کنید.