مهاجرت به Play Games Services Sign-In نسخه 2

این صفحه نحوه انتقال کد کلاینت خود را از Play Games Services v1 به v2 توضیح می دهد.

SDK جدید شامل چهار تغییر عمده برای افزایش موفقیت در ورود به سیستم است که باید از آنها آگاه باشید:

  1. هنگامی که بازی شما راه اندازی می شود، ورود به سیستم به طور خودکار فعال می شود. به جای استفاده از GoogleSignIn SDK برای انجام GoogleSignInClient به سیستم، می توانید از GamesSignInClient.isAuthenticated() برای واکشی نتیجه تلاش برای ورود خودکار به سیستم استفاده کنید.
  2. کلاس های Client Factory دیگر نیازی به ارسال شی GoogleSignInAccount ندارند. دامنه های OAuth اضافی را نمی توان درخواست کرد ( GAMES_LITE و SCOPE_APPFOLDER به صورت خودکار درخواست می شوند).
  3. نشانه‌های احراز هویت اکنون با استفاده از GamesSignInClient.requestServerSideAccess() در Play Games Services SDK ارائه می‌شوند.
  4. روش خروج از سیستم حذف شده است و دیگر نیازی به دکمه درون بازی برای ورود به سیستم یا خروج از خدمات بازی های Play نداریم.

علاوه بر این، بازی شما به دلیل ورود خودکار به سیستم هنگام راه‌اندازی بازی، لاگین‌های بیشتری را تجربه می‌کند. در نتیجه، باید مدیریت سهمیه خود را بررسی کنید تا مطمئن شوید که بازی شما از سهمیه درخواست ورود فراتر نمی رود.

مخزن جدید SDK Maven را هدف قرار دهید

اگر از سیستم ساخت Gradle استفاده می کنید، این کار را می توان با تغییر وابستگی خود به com.google.android.gms:play-services-games-v2:+ مصنوع در فایل build.gradle ماژول انجام داد. مثلا:

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

SDK را راه اندازی کنید

Play Games SDK را در پاسخ به تماس onCreate(..) کلاس Application خود راه اندازی کنید. مثلا:

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

...

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

تماس های ورود به سیستم و خروج از سیستم را حذف کنید

اگر هیچ محدوده اضافی به جز GAMES ، GAMES_LIGHT و SCOPE_APPFOLDER مشخص نکنید، انتقال مورد استفاده شما باید ساده باشد.

  1. تماس های ورود به سیستم را با استفاده از GoogleSignIn API حذف کنید. ورود به سیستم همیشه هنگام راه اندازی بازی انجام می شود. در عوض، با استفاده از GamesSignInClient.isAuthenticated() به نتیجه تلاش برای ورود خودکار به سیستم گوش دهید.

    GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
    
    gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
      boolean isAuthenticated =
        (isAuthenticatedTask.isSuccessful() &&
         isAuthenticatedTask.getResult().isAuthenticated());
    
      if (isAuthenticated) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a
        // login button to ask  players to sign-in. Clicking it should
        // call GamesSignInClient.signIn().
      }
    });
    
  2. همه تماس‌ها را برای خروج از سیستم حذف کنید، زیرا مدیریت حساب اکنون در تنظیمات برنامه «سیستم‌عامل» و «بازی‌های Play» قرار دارد.

  3. اگر بازیکن با موفقیت به سیستم وارد شد، دکمه ورود به بازی‌های Play را از بازی خود حذف کنید. اگر کاربر تصمیم گرفت هنگام راه‌اندازی بازی وارد سیستم نشود، می‌توانید به صورت اختیاری نشان دادن یک دکمه با نماد بازی‌های Play را ادامه دهید و فرآیند ورود را با GamesSignInClient.signIn() آغاز کنید.

  4. پس از تأیید اینکه کاربر وارد سیستم شده است، می توانید شناسه پخش کننده را برای شناسایی کاربر بازیابی کنید.

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. اگر دیگر از GoogleSignIn API استفاده نمی کنید، وابستگی خود را حذف کنید.

نام کلاس های کلاینت را به روز کنید

هنگام ایجاد کلاینت (به عنوان مثال LeaderboardsClient یا AchievementsClient ) از PlayGames.getFooClient() به جای Games.getFooClient() استفاده کنید.

درخواست دسترسی سمت سرور

هنگام درخواست دسترسی سمت سرور، از GamesSignInClient.requestServerSideAccess() به جای GoogleSignInAccount.getServerAuthCode() استفاده کنید.

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
  .requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
                           /*forceRefreshToken=*/ false)
  .addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
      String serverAuthToken = task.getResult();
      // Send authentication code to the backend game server to be
      // exchanged for an access token and used to verify the
      // player via the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

دامنه های اضافی را حذف کنید

با «خدمات بازی‌های Play» نسخه 2 نمی‌توانید دامنه‌های اضافی درخواست کنید. اگر همچنان نیاز به درخواست دامنه‌های اضافی دارید، توصیه می‌کنیم از Google Sign In SDK در کنار خدمات بازی‌های Play استفاده کنید.

مهاجرت از GoogleApiClient

برای ادغام‌های موجود قدیمی‌تر، ممکن است بازی شما به نوع GoogleApiClient API مربوط به SDK خدمات بازی‌های Play بستگی داشته باشد. این در اواخر سال 2017 منسوخ شد و با مشتریان "بدون اتصال" جایگزین شد. برای مهاجرت می‌توانید کلاس GoogleApiClient را با یک معادل «بدون اتصال» جایگزین کنید. سپس برای انتقال بازی خود از نسخه 1 به نسخه 2، باید دستورالعمل های بالا را دنبال کنید. در زیر نقشه ای از کلاس های رایج آورده شده است:

com.google.android.gms.games.achievement.Achievements ->
    com.google.android.gms.games.AchievementsClient

com.google.android.gms.games.leaderboard.Leaderboard ->
    com.google.android.gms.games.LeaderboardsClient

com.google.android.gms.games.snapshot.Snapshots ->
    com.google.android.gms.games.SnapshotsClient

com.google.android.gms.games.stats.PlayerStats ->
    com.google.android.gms.games.PlayerStatsClient

com.google.android.gms.games.Players ->
    com.google.android.gms.games.PlayersClient

com.google.android.gms.games.GamesStatusCodes ->
    com.google.android.gms.games.GamesClientStatusCodes