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.games
i com.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ęć:
- Aby zainstalować i skonfigurować aplikację do korzystania z usług gier Google Play, wykonaj instrukcje podane w przewodniku Konfigurowanie pakietu SDK usług Google Play.
- Określ osiągnięcia, które mają być odblokowywane lub wyświetlane w grze, postępując zgodnie z instrukcjami podanymi w przewodniku po Konsoli Google Play.
- Pobierz i przejrzyj przykłady kodu osiągnięć na stronie z przykładami kodu na Androida.
- Zapoznaj się z rekomendacjami opisanymi w kontrolnej liście jakości.
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ęć.
