Google 玩游戏服务 - 解锁成就弹出窗口未显示
Google Play Game Service - Unlocked Achievement Popup not shown
当我解锁成就时,"Achievement unlocked" 弹出窗口没有弹出,但正如我在成就列表中看到的那样,成就已解锁。
我已经尝试了 this 解决方案,但它不起作用。
我在 MainActivity 中像这样初始化 GoogleApiClient:
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();
在我的 "Game over Activity" 中,我执行以下操作:
ApplicationClass app = (ApplicationClass) getApplication();
googleApiClient = app.getGoogleApiClient();
...我解锁了这样的成就:
Games.Achievements.unlock(googleApiClient, "achievement id");
提前致谢!
游戏 API 专为单人 Activity 设计,但您可以多人使用。您是否有机会查看他们在 GithHub pages 提供的样本?他们在 BasicSamples/libraries/BaseGameUtils 下有一些可能有用的 classes。
您正在使用 this
在主 activity 上调用 Builder 方法。
new GoogleApiClient.Builder(this) //this being your MainActivity
然后您将 Api 客户端设置为应用程序 class。现在,当您在新的 GameOverActivity
中时,api 客户端正试图在屏幕上不再显示的 activity 上显示视图。它只引用了您的 MainActivity。您不应在应用程序 class 上为 Api 客户端设置变量。这也是一种不好的做法,因为您将侦听器回调设置为 activity,并且在调用其中一个回调时可能不再存在。
您想要与游戏 API 互动的任何 activity 都应源自 GitHub 上 BaseGameUtils
中的 BaseGameActivity
。在每个 activity 中,您将有一个名为 getApiClient()
.
的方法
我必须执行以下操作:
GamesClient gamesClient = Games.getGamesClient(this, GoogleSignIn.getLastSignedInAccount(this));
gamesClient.setViewForPopups(findViewById(android.R.id.content));
gamesClient.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
当我解锁成就时,"Achievement unlocked" 弹出窗口没有弹出,但正如我在成就列表中看到的那样,成就已解锁。
我已经尝试了 this 解决方案,但它不起作用。
我在 MainActivity 中像这样初始化 GoogleApiClient:
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();
在我的 "Game over Activity" 中,我执行以下操作:
ApplicationClass app = (ApplicationClass) getApplication();
googleApiClient = app.getGoogleApiClient();
...我解锁了这样的成就:
Games.Achievements.unlock(googleApiClient, "achievement id");
提前致谢!
游戏 API 专为单人 Activity 设计,但您可以多人使用。您是否有机会查看他们在 GithHub pages 提供的样本?他们在 BasicSamples/libraries/BaseGameUtils 下有一些可能有用的 classes。
您正在使用 this
在主 activity 上调用 Builder 方法。
new GoogleApiClient.Builder(this) //this being your MainActivity
然后您将 Api 客户端设置为应用程序 class。现在,当您在新的 GameOverActivity
中时,api 客户端正试图在屏幕上不再显示的 activity 上显示视图。它只引用了您的 MainActivity。您不应在应用程序 class 上为 Api 客户端设置变量。这也是一种不好的做法,因为您将侦听器回调设置为 activity,并且在调用其中一个回调时可能不再存在。
您想要与游戏 API 互动的任何 activity 都应源自 GitHub 上 BaseGameUtils
中的 BaseGameActivity
。在每个 activity 中,您将有一个名为 getApiClient()
.
我必须执行以下操作:
GamesClient gamesClient = Games.getGamesClient(this, GoogleSignIn.getLastSignedInAccount(this));
gamesClient.setViewForPopups(findViewById(android.R.id.content));
gamesClient.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL);