הישגים במשחקי Android

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

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

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

לפני שמתחילים לקוד באמצעות ה-API של ההישגים:

קבלת לקוח של הישגים

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

זכייה בהישגים

כדי לבטל את נעילת ההישג, קראו לשיטה AchievementsClient.unlock() והזינו את מזהה ההישג.

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

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .unlock(getString(R.string.my_achievement_id));

אם ההישג הוא מסוג מצטבר (כלומר, נדרשים מספר שלבים כדי לבטל את הנעילה שלו), יש להתקשר במקום זאת ל-AchievementsClient.increment().

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

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .increment(getString(R.string.my_achievement_id), 1);

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

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

מוצגים הישגים

כדי להציג את ההישגים של שחקן, התקשרו אל AchievementsClient.getAchievementsIntent() כדי לקבל Intent וליצור את ממשק המשתמש של ההישגים המוגדר כברירת מחדל. לאחר מכן המשחק יוכל להציג את ממשק המשתמש startActivityForResult.

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

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getAchievementsIntent()
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_ACHIEVEMENT_UI);
        }
      });
}

למטה אפשר לראות דוגמה לממשק המשתמש של ההישגים המוגדר כברירת מחדל.