این صفحه نحوه انتقال کد کلاینت خود را از Play Games Services v1 به v2 توضیح می دهد.
SDK جدید شامل چهار تغییر عمده برای افزایش موفقیت در ورود به سیستم است که باید از آنها آگاه باشید:
- هنگامی که بازی شما راه اندازی می شود، ورود به سیستم به طور خودکار فعال می شود. به جای استفاده از GoogleSignIn SDK برای انجام
GoogleSignInClient
به سیستم، می توانید ازGamesSignInClient.isAuthenticated()
برای واکشی نتیجه تلاش برای ورود خودکار به سیستم استفاده کنید. - کلاس های Client Factory دیگر نیازی به ارسال شی
GoogleSignInAccount
ندارند. دامنه های OAuth اضافی را نمی توان درخواست کرد (GAMES_LITE
وSCOPE_APPFOLDER
به صورت خودکار درخواست می شوند). - نشانههای احراز هویت اکنون با استفاده از
GamesSignInClient.requestServerSideAccess()
در Play Games Services SDK ارائه میشوند. - روش خروج از سیستم حذف شده است و دیگر نیازی به دکمه درون بازی برای ورود به سیستم یا خروج از خدمات بازی های 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
مشخص نکنید، انتقال مورد استفاده شما باید ساده باشد.
تماس های ورود به سیستم را با استفاده از 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(). } });
همه تماسها را برای خروج از سیستم حذف کنید، زیرا مدیریت حساب اکنون در تنظیمات برنامه «سیستمعامل» و «بازیهای Play» قرار دارد.
اگر بازیکن با موفقیت به سیستم وارد شد، دکمه ورود به بازیهای Play را از بازی خود حذف کنید. اگر کاربر تصمیم گرفت هنگام راهاندازی بازی وارد سیستم نشود، میتوانید به صورت اختیاری نشان دادن یک دکمه با نماد بازیهای Play را ادامه دهید و فرآیند ورود را با
GamesSignInClient.signIn()
آغاز کنید.پس از تأیید اینکه کاربر وارد سیستم شده است، می توانید شناسه پخش کننده را برای شناسایی کاربر بازیابی کنید.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
اگر دیگر از 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