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

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

'ערכת ה-SDK החדשה' כוללת ארבעה שינויים עיקריים שנועדו לשפר את הצלחת הכניסה, צריכים להיות מודעים ל:

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

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

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

אם אתם משתמשים במערכת ה-build של 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 ב-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. מסירים את התלות ב-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 with the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

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

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

העברה מ-GoogleApiClient

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