Osiągnięcia w grach na Androida

W związku z wycofaniem interfejsu Logowanie w Google API usuwamy w 2026 r. pakiet SDK gier w wersji 1. Z końcem lutego 2025 r. nie będzie już można publikować w Google Play nowych tytułów, w których zastosowano integrację z wersją 1 pakietu SDK gier. Zalecamy użycie pakietu programistycznego Games v2.
Dotychczasowe tytuły z integracją poprzedniej wersji 1 będą działać przez kilka lat, ale zachęcamy do przejścia na wersję 2 od czerwca 2025 r.
Ten przewodnik dotyczy pakietu SDK usług gier Play w wersji 1. Informacje o najnowszej wersji pakietu SDK znajdziesz w dokumentacji wersji 2.

Z tego przewodnika dowiesz się, jak używać interfejsów API osiągnięć w aplikacji na Androida, aby odblokowywać i wyświetlać osiągnięcia 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 zrobisz, warto zapoznać się z koncepcją osiągnięć w grze.

Zanim zaczniesz kodować przy użyciu interfejsu API osiągnięć:

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 pobrać informacje o koncie gracza, przeczytaj artykuł Logowanie się w Grach Play.

odblokować 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 odblokować 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 wysyłasz żądania aktualizowania i wczytywania osiągnięć, pamiętaj też o tych sprawdzonych metodach, aby nie przekroczyć limitu interfejsu API.

Wyświetlanie osiągnięć

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ęć. W tym fragmencie kodu RC_ACHIEVEMENT_UI to dowolna liczba całkowita, 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);
        }
      });
}

Poniżej przedstawiamy przykład interfejsu domyślnego osiągnięć.