Po wycofaniu interfejsu Google Sign-In
API w 2026 roku usuniemy pakiet SDK do 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. Zamiast tego zalecamy używanie pakietu SDK do gier w wersji 2.
Dotychczasowe tytuły z integracjami gier w wersji 1 będą działać jeszcze przez kilka lat, ale zachęcamy do przejścia na wersję 2 od czerwca 2025 r.
Ten przewodnik dotyczy korzystania z 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 można znaleźć w pakietach com.google.android.gms.games
i com.google.android.gms.games.achievements
.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiono, warto zapoznać się z pojęciami dotyczącymi gier z osiągnięciami.
Zanim zaczniesz pisać kod z użyciem interfejsu API osiągnięć:
- Postępuj zgodnie z instrukcjami instalowania i konfigurowania aplikacji, aby korzystać z usług gier Google Play, które znajdziesz w przewodniku Konfigurowanie pakietu SDK usług Google Play.
- Określ osiągnięcia, które mają być odblokowywane lub wyświetlane w Twojej grze, postępując zgodnie z instrukcjami w przewodniku po Konsoli Google Play.
- Pobierz i przejrzyj przykłady kodu dotyczące osiągnięć na stronie z przykładami na Androida.
- Zapoznaj się z rekomendacjami opisanymi w liście kontrolnej 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
bieżącego gracza. Aby dowiedzieć się, jak pobrać informacje o koncie gracza, przeczytaj artykuł Logowanie się w grach na Androida.
Odblokowywanie osiągnięć
Aby odblokować osiągnięcie, wywołaj metodę AchievementsClient.unlock()
i przekaż 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, aby je odblokować), zamiast tego wywołaj funkcję AchievementsClient.increment()
.
Poniższy fragment kodu pokazuje, jak aplikacja może zwiększyć liczbę osiągnięć 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ę kroków.
Dobrym rozwiązaniem jest zdefiniowanie identyfikatorów osiągnięć w pliku strings.xml
, aby gra mogła odwoływać się do osiągnięć za pomocą identyfikatora zasobu. Podczas wywoływania funkcji aktualizowania i wczytywania osiągnięć pamiętaj, aby stosować te sprawdzone metody, aby uniknąć przekroczenia 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 umożliwi utworzenie domyślnego interfejsu osiągnięć. Gra może wtedy wyświetlić interfejs, wywołując funkcję
startActivityForResult
.
Poniższy fragment kodu pokazuje, jak aplikacja może wyświetlać domyślny interfejs 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 znajduje się przykład domyślnego interfejsu osiągnięć.
