Osiągnięcia w grach na Androida

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.gamescom.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 przy użyciu interfejsu API osiągnięć:

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 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 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 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() w celu uzyskania obiektu Intent i utwórz 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 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ęć.