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 zrobiłeś, warto zapoznać się z koncepcjami dotyczącymi 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, wykonując instrukcje podane 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.
odblokowywać 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 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), 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 wykonujesz wywołania, aby aktualizować i wczytywać osiągnięcia, stosuj te sprawdzone metody, 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ęć.