Osiągnięcia w grach na Androida

Z tego przewodnika dowiesz się, jak używać interfejsów API osiągnięć w aplikacji na Androida do odblokowywania i wyświetlania osiągnięć w grze. Interfejsy API znajdują się w pakietach com.google.android.gms.gamescom.google.android.gms.games.achievements.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiłeś, warto zapoznać się z koncepcjami dotyczącymi osiągnięć w grze.

Zanim zaczniesz pisać kod z użyciem interfejsu Attribution API:

Pobieranie klienta osiągnięć

Aby zacząć korzystać z interfejsu API osiągnięć, gra musi najpierw uzyskać obiekt AchievementsClient. Możesz to zrobić, wywołując metodę Games.getAchievementClient() i przekazując aktywność oraz GoogleSignInAccount dla bieżącego odtwarzacza. Aby dowiedzieć się, jak odzyskać informacje o koncie gracza, przeczytaj sekcję Logowanie się w grach na Androida.

Odblokuj osiągnięcia

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

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

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

Jeśli osiągnięcie jest typu wieloetapowego (czyli wymaga wykonania kilku czynności), wywołaj zamiast tego funkcję AchievementsClient.increment().

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

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(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 odblokowują osiągnięcie, gdy osiągnie ono wymaganą liczbę etapów.

Dobrą praktyką jest zdefiniowanie identyfikatorów osiągnięć w pliku strings.xml, aby gra mogła się do nich odwoływać za pomocą identyfikatora zasobu. Gdy wykonujesz wywołania, aby aktualizować i wczytywać osiągnięcia, stosuj te sprawdzone metody, aby nie przekroczyć limitu interfejsu API.

Wyświetl osiągnięcia

Aby wyświetlić osiągnięcia gracza, wywołaj funkcję AchievementsClient.getAchievementsIntent(), aby uzyskać obiekt Intent, który służy do tworzenia domyślnego interfejsu użytkownika dla osiągnięć. Gra może wyświetlić interfejs, wywołując funkcję startActivityForResult.

Ten fragment kodu pokazuje, jak aplikacja może wyświetlić domyślny interfejs użytkownika dotyczący osiągnięć. RC_ACHIEVEMENT_UI zawiera we fragmencie kodu dowolną liczbę całkowitą, której gra używa jako kodu żądania.

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);
        }
      });
}

Przykład domyślnego interfejsu osiągnięć znajdziesz poniżej.