לוחות לידרבורד במשחק Android

במדריך הזה מוסבר איך להשתמש בממשקי API של לוחות לידרבורד באפליקציה ל-Android כדי ליצור לוחות לידרבורד ויזואליים, להקליט ניקוד של שחקן ולהשוות את הניקוד לעומת התוצאה של השחקן מסשנים קודמים של משחקים. ניתן למצוא את ממשקי ה-API. בcom.google.android.gms.games ו-com.google.android.gms.games.leaderboards חבילות.

לפני שמתחילים

אם עדיין לא עשית זאת, מומלץ לעיין קונספטים של משחקי Leaderboards.

לפני שתתחילו לתכנת באמצעות ממשקי ה-API של לוחות Leaderboard:

אחזור של לקוח Leaderboards

כדי להתחיל להשתמש ב-API של Leaderboards, המשחק צריך קודם לקבל אובייקט LeaderboardsClient. כדי לעשות זאת, מפעילים את השיטה Games.getLeadeboardsClient() ומעבירים את פעילות ואת ה-GoogleSignInAccount של הנגן הנוכחי. כדי ללמוד איך לאחזר את לפרטים על חשבון השחקן, ראו כניסה ב-Android Games.

עדכון הניקוד של השחקן

כשהניקוד של השחקן משתנה (לדוגמה, כשהשחקן מסיים את המשחק), יכול לעדכן את הניקוד שלו בלוח הישגי השחקנים המובילים באמצעות שיחה אל LeaderboardsClient.submitScore(), ולהעביר את מזהה הלידרבורד ואת ערך הניקוד הגולמי.

בקטע הקוד הבא אפשר לראות איך האפליקציה יכולה לעדכן את הציון של השחקן:

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

שיטה מומלצת היא להגדיר את מזהה הלידרבורד בקובץ strings.xml, כך המשחק שלכם יוכל להפנות ללוחות הלידרבורד לפי מזהה משאב. בביצוע שיחות אל לעדכן ולטעון ניקוד של שחקנים, הקפידו לעקוב גם אחר שיטות מומלצות למניעת חריגה ממכסת ה-API.

הצגת לוח הישגי השחקנים המובילים

כדי להציג את הלידרבורד, יש להתקשר למספר LeaderboardsClient.getLeaderboardIntent() כדי לקבל Intent עד ליצור את ממשק המשתמש של Leaderboard כברירת מחדל. לאחר מכן המשחק יכול להציג את ממשק המשתמש באמצעות התקשרות startActivityForResult

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

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

שימו לב שלמרות שלא מוחזרת תוצאה, עלינו להשתמש startActivityForResult כדי שה-API יוכל להשיג את הזהות של חבילת הקריאה. דוגמה לברירת המחדל ממשק המשתמש של הלידרבורד מוצג למטה.