Ten przewodnik pokazuje, jak używać interfejsów API osiągnięć w aplikacji na Androida do odblokowywania i wyświetlania osiągnięć w grze. Interfejsy API znajdziesz w pakietach com.google.android.gms.games
i com.google.android.gms.games.achievements
.
Zanim zaczniesz
Warto zapoznać się z koncepcjami dotyczącymi osiągnięć.
Zanim zaczniesz kodować za pomocą interfejsu API osiągnięć:
- Postępuj zgodnie z instrukcjami instalowania i konfigurowania aplikacji, by używać usług gier Google Play z przewodnika po konfigurowaniu pakietów SDK usług Google Play.
- Zdefiniuj osiągnięcia, które chcesz odblokować lub wyświetlić w grze, postępując zgodnie z instrukcjami w przewodniku po Konsoli Google Play.
- Pobierz i przejrzyj przykładowe fragmenty kodu osiągnięć na stronie z przykładami na Androida.
- Zapoznaj się z rekomendacjami opisanymi na liście kontrolnej jakości.
Uzyskiwanie 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 gracza. Aby dowiedzieć się, jak pobrać informacje o koncie gracza, przeczytaj artykuł Logowanie się w grach na Androida.
Odblokowanie osiągnięć
Aby odblokować osiągnięcie, wywołaj metodę AchievementsClient.unlock()
i prześlij 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 przyrostowe (czyli trzeba je wykonać kilka kroków), zadzwoń do 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 odblokują to osiągnięcie.
Warto zdefiniować identyfikatory osiągnięć w pliku strings.xml
, aby gra mogła odwoływać się do osiągnięć według identyfikatora zasobu. Wykonując wywołania związane z aktualizacjami i wczytywaniem danych, pamiętaj także o tych sprawdzonych metodach, aby uniknąć przekroczenia limitu interfejsu API.
Wyświetlam osiągnięcia
Aby wyświetlić osiągnięcia gracza, wywołaj interfejs AchievementsClient.getAchievementsIntent()
, aby uzyskać dostęp do interfejsu Intent
i utworzyć domyślny interfejs osiągnięć. Gdy to zrobisz, Twoja gra może wywołać interfejs, wywołując metodę startActivityForResult
.
Ten fragment kodu pokazuje, jak aplikacja może wyświetlać domyślny interfejs osiągnięcia.
We fragmencie kodu RC_ACHIEVEMENT_UI
jest dowolną liczbą całkowitą, którą gra wykorzystuje jako kod żą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 znajdziesz przykładowy domyślny interfejs osiągnięć.