Google Play游戏服务 - 未显示已解锁的成就弹出窗口

时间:2015-01-02 21:37:48

标签: android google-play-services google-play-games

当我解锁成就时,“成就解锁”弹出窗口没有弹出,但成就已解锁,正如我在成就列表中看到的那样。

我已经尝试过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();

在我的“游戏活动”中,我执行以下操作:

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

...我解锁了这样的成就:

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

提前致谢!

2 个答案:

答案 0 :(得分:3)

Games API是针对单个Activity设计的,尽管您可以多次使用它。您是否有机会查看他们在GithHub pages提供的样品?他们在BasicSamples / libraries / BaseGameUtils下有一些可能有用的类。

您正在使用this在主要活动上调用Builder方法。

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

然后,您将Api客户端设置为应用程序类。现在,当您使用新的GameOverActivity时,api客户端会尝试显示屏幕上不再显示的活动的视图。它只引用了您的MainActivity。您不应在Api客户端的Application类上设置变量。这也是不好的做法,因为您将侦听器回调设置为活动,并且在调用其中一个回调时可能不再存在。

您要与Games API互动的任何活动都应来自GitHub上BaseGameActivity中的BaseGameUtils。在每个活动中,您将拥有一个名为getApiClient()的方法。

答案 1 :(得分:3)

我必须执行以下操作:

<%= form_with model: [@user, @blog], local: true do |f| %>
  <%  f.label :title %>
  <%= f.text_field :title %>
  <%  f.label :content %>
  <%= f.text_area :content %>
  <%= f.submit "create", class: "btn btn-primary" %>
<% end %>