احراز هویت پلتفرم برای بازی های اندروید

برای دسترسی به قابلیت‌های خدمات بازی‌های گوگل پلی، بازی شما باید حساب کاربری تأیید شده‌ی بازیکن را ارائه دهد. این مستندات نحوه‌ی پیاده‌سازی یک تجربه‌ی احراز هویت یکپارچه در بازی شما را شرح می‌دهد.

کیت توسعه نرم‌افزار Play Games Services v2 بهبودهایی را به همراه دارد که تعداد کاربران احراز هویت شده در بازی شما را افزایش داده و توسعه را آسان‌تر می‌کند:

  • بهبودهایی برای کاربران:
    • پس از انتخاب حساب پیش‌فرض، کاربران بدون نیاز به تعامل با اعلان، احراز هویت می‌شوند.
    • کاربران دیگر نیازی به دانلود برنامه Play Games برای تأیید اعتبار با سرویس‌های Play Games یا ایجاد یک حساب کاربری جدید ندارند.
    • کاربران اکنون می‌توانند حساب‌های کاربری سرویس‌های بازی‌های Play خود را برای چندین بازی از یک صفحه مدیریت کنند.
  • بهبودهایی برای توسعه‌دهندگان:
  • کد کلاینت دیگر نیازی به مدیریت جریان احراز هویت یا خروج از سیستم ندارد، زیرا ورود به سیستم به طور خودکار با شروع بازی فعال می‌شود و مدیریت حساب در تنظیمات سیستم عامل انجام می‌شود.

ادغام کلاینت جدید

این بخش نحوه یکپارچه‌سازی کلاینت جدید با ورود به سیستم سرویس‌های بازی‌های Play نسخه ۲ را نشان می‌دهد.

وابستگی را اضافه کنید

وابستگی SDK مربوط به Play Game Services را به فایل build.gradle سطح ریشه برنامه خود اضافه کنید. اگر از Gradle استفاده می‌کنید، می‌توانید این وابستگی را به صورت زیر اضافه یا به‌روزرسانی کنید:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

تعریف شناسه پروژه

برای افزودن شناسه پروژه SDK سرویس‌های Play Games به برنامه خود، مراحل زیر را انجام دهید:

  1. در فایل AndroidManifest.xml برنامه خود، عنصر <meta-data> و ویژگی‌های زیر را به عنصر <application> اضافه کنید:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    مرجع منبع رشته‌ای @string/game_services_project_id را با استفاده از شناسه پروژه خدمات بازی بازی‌های خود به عنوان مقدار تعریف کنید. شناسه پروژه خدمات بازی‌های شما را می‌توانید زیر نام بازی خود در صفحه پیکربندی در کنسول گوگل پلی پیدا کنید.

  2. در فایل res/values/strings.xml خود، یک مرجع منبع رشته‌ای اضافه کنید و شناسه پروژه خود را به عنوان مقدار تنظیم کنید. در کنسول گوگل پلی، می‌توانید شناسه پروژه خود را زیر نام بازی خود در صفحه پیکربندی پیدا کنید. به عنوان مثال:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

مقداردهی اولیه SDK

کیت توسعه نرم‌افزار Play Games را در فراخوانی onCreate(..) از کلاس Application خود مقداردهی اولیه کنید.

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

دریافت نتیجه احراز هویت

وقتی بازی شما اجرا می‌شود، همیشه سعی می‌کند کاربر را احراز هویت کند. برای احراز هویت کاربر، باید تأیید کنید که کاربر با موفقیت احراز هویت شده است و سپس شناسه بازیکن (Player ID) او را دریافت کنید.

برای تأیید تلاش احراز هویت، GamesSignInClient.isAuthenticated() را فراخوانی کنید و addOnCompleteListener برای بازیابی نتایج استفاده کنید. برای مثال:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

اگر کاربر هنگام اجرای بازی تصمیم به احراز هویت نگرفت، توصیه می‌شود که همچنان دکمه‌ای با آیکون Play Games را نمایش دهید یا صفحه ورود به سیستمی را به کاربر نشان دهید که یکی از گزینه‌های احراز هویت، دکمه‌ای با آیکون Play Games باشد و اگر کاربر دکمه را فشار داد، دوباره با فراخوانی GamesSignInClient.signIn() سعی کنید کاربر را احراز هویت کنید. پس از تأیید احراز هویت کاربر، می‌توانید شناسه بازیکن را برای شناسایی کاربر بازیابی کنید. به عنوان مثال:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);