2015-01-02 9 views
5

Wenn ich einen Erfolg freigebe, wird das Popup "Achievement unlocked" nicht angezeigt, aber der Erfolg ist freigeschaltet, wie ich in der Leistungsliste sehen kann.Google Play Game-Dienst - Freigeschaltetes Achievement-Popup wird nicht angezeigt

Ich habe bereits this Lösung versucht, aber es funktioniert nicht.

ich initialisieren GoogleApiClient wie dies in meinem MainActivity:

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(); 

In meinem "Game over Activity" Ich mache folgendes:

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

... und ich entsperren Leistungen wie folgt aus:

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

Vielen Dank im Voraus!

Antwort

3

Die Spiele-API wurde für eine einzelne Aktivität entwickelt, obwohl Sie sie in mehreren verwenden können. Hatten Sie die Möglichkeit, sich die von Ihnen bereitgestellten Beispiele unter GithHub pages anzusehen? Sie haben einige Klassen unter BasicSamples/libraries/BaseGameUtils, die hilfreich sein könnten.

Sie rufen die Builder-Methode für Ihre Hauptaktivität mit this auf.

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

Dann setzen Sie den Api-Client auf die Anwendungsklasse. Nun, wenn Sie in Ihrem neuen GameOverActivity sind, versucht der API-Client, eine Sicht auf eine Aktivität anzuzeigen, die nicht mehr auf dem Bildschirm angezeigt wird. Es hat nur einen Verweis auf Ihre MainActivity. Sie sollten keine Variable für die Application-Klasse für den Api-Client festlegen. Dies ist auch eine schlechte Methode, da Sie die Listener-Callbacks für die Aktivität festlegen und möglicherweise nicht mehr vorhanden sind, wenn einer der Callbacks aufgerufen wird.

Jede Aktivität, die Sie mit der Spiele-API interagieren möchten, sollte von BaseGameActivity in der BaseGameUtils auf GitHub stammen. In jeder Aktivität haben Sie eine Methode namens .

Verwandte Themen