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

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

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

אם עדיין לא עשיתם זאת, כדאי לעיין במושגים של משחקי Leaderboard.

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

הורדה של לקוח Leaderboards

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

עדכון התוצאה של השחקן

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

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

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

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

הצגת הלידרבורד

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

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

private static final int RC_LEADERBOARD_UI = 9004;

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

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