Osiągnięcia w grach na Androida

Ten przewodnik pokazuje, jak używać interfejsów API osiągnięć w aplikacji na Androida do odblokowywania i wyświetlania osiągnięć w grze. Interfejsy API znajdziesz w pakietach com.google.android.gms.games i com.google.android.gms.games.achievements.

Zanim zaczniesz

Warto zapoznać się z koncepcjami dotyczącymi osiągnięć.

Zanim zaczniesz kodować za pomocą interfejsu API osiągnięć:

Uzyskiwanie klienta osiągnięć

Aby zacząć korzystać z interfejsu API osiągnięć, gra musi najpierw uzyskać obiekt AchievementsClient. Aby to zrobić, wywołaj metodę Games.getAchievementClient() i przekaż działanie.

Odblokowanie osiągnięć

Aby odblokować osiągnięcie, wywołaj metodę AchievementsClient.unlock() i prześlij identyfikator osiągnięcia.

Ten fragment kodu pokazuje, jak aplikacja może odblokowywać osiągnięcia:

PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));

Jeśli osiągnięcie jest przyrostowe (czyli trzeba je wykonać kilka kroków), zadzwoń do AchievementsClient.increment().

Ten fragment kodu pokazuje, jak aplikacja może zwiększyć osiągnięcie gracza:

PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);

Nie musisz pisać dodatkowego kodu, aby odblokować osiągnięcie. Usługi gier Google Play automatycznie odblokują to osiągnięcie.

Warto zdefiniować identyfikatory osiągnięć w pliku strings.xml, aby gra mogła odwoływać się do osiągnięć według identyfikatora zasobu. Wykonując wywołania związane z aktualizacjami i wczytywaniem danych, pamiętaj także o tych sprawdzonych metodach, aby uniknąć przekroczenia limitu interfejsu API.

Wyświetlam osiągnięcia

Aby wyświetlić osiągnięcia gracza, wywołaj interfejs AchievementsClient.getAchievementsIntent(), aby uzyskać dostęp do interfejsu Intent i utworzyć domyślny interfejs osiągnięć. Gdy to zrobisz, Twoja gra może wywołać interfejs, wywołując metodę startActivityForResult.

Ten fragment kodu pokazuje, jak aplikacja może wyświetlać domyślny interfejs osiągnięcia. We fragmencie kodu RC_ACHIEVEMENT_UI jest dowolną liczbą całkowitą, którą gra wykorzystuje jako kod żądania.

private static final int RC_ACHIEVEMENT_UI = 9003;

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

Poniżej znajdziesz przykładowy domyślny interfejs osiągnięć.