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 znajdziesz 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ść.
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:
PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));
Jeśli osiągnięcie jest typu wieloetapowego (czyli do jego odblokowania wymagane jest wykonanie kilku czynności), zamiast tego wywołaj metodę AchievementsClient.increment()
.
Poniższy fragment kodu pokazuje, jak aplikacja może zwiększyć postęp gracza w zdobywaniu osiągnięcia:
PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);
Nie musisz pisać dodatkowego kodu, aby odblokować osiągnięcie. Usługi gier Play odblokowują je automatycznie, 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 postępować zgodnie z tymi sprawdzonymi metodami, 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 utworzy domyślny interfejs osiągnięć. Gra może wtedy wyświetlić interfejs, wywołując funkcję startActivityForResult
.
Ten 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() { PlayGames.getAchievementsClient(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ęć.
