2015-01-02 13 views
5

Bir başarının kilidini açtığımda "Acievement unlocked" penceresi açılmıyor ama başarı listesinde gördüğüm gibi başarı açık.Google Play Oyun Servisi - Unlocked Achievement Popup görüntülenmiyor

Zaten this çözümünü denedim, ancak çalışmıyor. Ben aşağıdakileri yapın "Etkinlik boyunca Oyun" Benim içinde

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

:

benim MainActivity böyle GoogleApiClient başlatmak

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

... ve bunun gibi başarıları kilidini:

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

Şimdiden teşekkürler!

cevap

3

Oyunlar API'si tek bir Etkinlik için tasarlanmıştır, ancak bunu birden çok kullanabilirsiniz. GithHub pages'da sağladıkları Örneklere bakma şansınız oldu mu? BasicSamples/library/BaseGameUtils altında yardımcı olabilecek bazı sınıflar var.

this ile ana etkinliğinizde Builder yöntemini çağırıyorsunuz. Daha sonra Api istemcisini uygulama sınıfına ayarlıyorsunuz. Daha sonra, Api istemcisini uygulama sınıfına ayarlıyorsunuzdur. Şimdi, yeni GameOverActivity'unuzdayken, api istemcisi artık ekranda bulunmayan bir etkinliğe bir görünüm göstermeye çalışıyor. Sadece Ana Etkinliğinize bir referans var. Api İstemcisi için Uygulama sınıfında bir değişken ayarlamamalısınız. Bu da kötü bir uygulamadır çünkü dinleyici geri aramalarını aktiviteye ayarlamışsınızdır ve geri aramalardan biri çağrıldığında artık orada olmayabilir.

Oyunlar API'siyle etkileşim kurmak istediğiniz herhangi bir etkinlik, GitHub'da BaseGameUtils içinde bulunan BaseGameActivity'dan türetilmelidir. Her aktivitede, getApiClient() adı verilen bir yönteme sahip olacaksınız.