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ęć.