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