מעבר לגרסה 2 של תהליך הכניסה ל-Play Games Services

במדריך הזה מוסבר איך להעביר את קוד הלקוח מ-Play Games Services v1 ל-v2.

ה-SDK החדש מכיל ארבעה שינויים משמעותיים שיעזרו לכם לשפר את ההצלחה של הכניסה לחשבון. חשוב לדעת:

  1. הכניסה לחשבון מופעלת באופן אוטומטי כשמפעילים את המשחק. במקום להשתמש ב-GoogleSignInClient של GoogleSignIn SDK כדי לבצע כניסה, אפשר להשתמש ב-GamesSignInClient.isAuthenticated() כדי לאחזר את התוצאה של ניסיון הכניסה האוטומטי.
  2. לא תצטרכו להעביר אובייקט GoogleSignInAccount לכיתות של Client Factory. לא ניתן לבקש היקפי הרשאות נוספים של OAuth (הבקשה ל-GAMES_LITE תתבצע באופן אוטומטי).
  3. אסימוני אימות ניתנים עכשיו באמצעות GamesSignInClient.requestServerSideAccess() ב-SDK של Play Games Services.
  4. שיטת היציאה מהחשבון תבוטל, ולא נצטרך יותר לחצן במשחק כדי להיכנס או לצאת מ-Play Games Services.

בנוסף, יהיו במשחק כניסות נוספות בגלל הכניסה האוטומטית כשהמשחק יושק. לכן, כדאי לבדוק את ניהול המכסות כדי לוודא שהמשחק לא חורג מהמכסה של בקשות ההתחברות.

טירגוט למאגר Maven החדש של ה-SDK

אם אתם משתמשים במערכת ה-build של Gradle, תוכלו לעשות זאת על ידי שינוי התלות ב-artifact com.google.android.gms:play-services-games-v2:+ בקובץ build.gradle של המודול. לדוגמה:

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

אתחול ה-SDK

אתחול ה-SDK של Play Games ב-callback של onCreate(..) בכיתה Application. לדוגמה:

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

...

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

הסרת הקריאות לכניסה וליציאה מהחשבון

אם לא מציינים היקפים נוספים, ההעברה של תרחיש לדוגמה אמורה להיות פשוטה.

  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 Games.

  3. אם השחקן נכנס לחשבון בהצלחה, מסירים את לחצן הכניסה ל-Play Games מהמשחק. אם המשתמש יבחר לא להיכנס לחשבון כשהמשחק יופעל, תוכלו להמשיך להציג לחצן עם סמל Play Games ולהפעיל את תהליך הכניסה באמצעות GamesSignInClient.signIn().

  4. אחרי שתבדקו שהמשתמש נכנס לחשבון, תוכלו לאחזר את מזהה המשתמש כדי לזהות אותו.

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. אם אתם לא משתמשים יותר ב-API של GoogleSignIn, הסירו את התלות בו.

עדכון שמות של כיתות לקוח

כשיוצרים לקוחות (למשל 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 with the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

הסרת היקפי גישה נוספים

בגרסה 2 של שירותי Play Games אי אפשר לבקש היקפי הרשאה נוספים. אם עדיין צריך לבקש היקפי גישה נוספים, מומלץ להשתמש ב-Google Sign In SDK לצד שירותי המשחקים של Play.

מעבר מ-GoogleApiClient

בשילובים קיימים ישנים יותר, יכול להיות שהמשחק שלכם תלוי בגרסה של GoogleApiClient API ב-SDK של Play Games Services. האפשרות הזו הווצאה משימוש בסוף שנת 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