2015-01-02 24 views
5

Kiedy odblokowuję osiągnięcie, nie pojawia się wyskakujące okno "Osiągnięcie odblokowane", ale osiągnięcie odblokowane, jak widzę na liście osiągnięć.Google Play - Odblokowanie pokazu nie pokazane

Próbowałem już rozwiązania this, ale to nie działa.

zainicjować GoogleApiClient jak to w moim główną działalność:

gac = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN) 
      .addApi(Games.API).addScope(Games.SCOPE_GAMES) 
      .build(); 
app.setGoogleApiClient(gac); 
gac.connect(); 

W moim "Game over Aktywny" I wykonaj następujące czynności:

ApplicationClass app = (ApplicationClass) getApplication(); 
googleApiClient = app.getGoogleApiClient(); 

... i odblokować osiągnięcia jak to:

Games.Achievements.unlock(googleApiClient, "achievement id"); 

Z góry dziękuję!

Odpowiedz

3

Interfejs API gier został zaprojektowany dla pojedynczej aktywności, chociaż można go używać w wielu. Czy miałeś okazję przyjrzeć się próbkom dostarczonym pod numerem GithHub pages? Mają niektóre klasy w ramach BasicSamples/libraries/BaseGameUtils, które mogą być pomocne.

Wywołujesz metodę Builder na głównej aktywności z this.

new GoogleApiClient.Builder(this) //this being your MainActivity 

Następnie ustawiasz klienta Api na klasę aplikacji. Teraz, gdy jesteś w nowej GameOverActivity, klient api próbuje pokazać widok aktywności, która nie jest już wyświetlana na ekranie. Ma tylko odniesienie do twojej Głównej Aktywności. Nie powinieneś ustawiać zmiennej w klasie Application dla klienta Api. Jest to również zła praktyka, ponieważ ustawiasz wywołania zwrotne odbierającego do działania i mogą one już nie być dostępne przed wywołaniem jednego z wywołań zwrotnych.

Każda aktywność, z którą chcesz nawiązać interakcję z interfejsem API Games, powinna pochodzić z wersji BaseGameActivity, którą można znaleźć na stronie BaseGameUtils na GitHub. W każdym działaniu będziesz miał metodę o nazwie getApiClient().