从谷歌播放游戏服务排行榜屏幕注销

时间:2015-11-10 08:59:26

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

当屏幕上显示排行榜时,会出现一个名为“设置”的选项。在里面有一个选项“Signout”。当我点击退出时,排行榜已关闭,

问题。

如果我检查了登录状态,则以下功能始终返回true。表示mGoogleApiClient已连接。因此,当我尝试单击显示排行榜的图标时,它始终具有responseCode RESULT_RECONNECT_REQUIRED。

如果我重启我的应用程序

,这个问题就消失了
public boolean isSignedIn() {
    return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}

问题。

该程序如何知道用户已在排行榜屏幕中注销。

2 个答案:

答案 0 :(得分:7)

由于连接处于不一致状态(source),您必须抓住onActivityResult中的注销并自己致电GoogleApiClient.disconnect()

因此,当您使用以下代码打开排行榜时:

activity.startActivityForResult(Games.Leaderboards.getLeaderboardIntent(googleApiClient, leaderboardId), MY_CUSTOM_LEADERBOARD_RESULT_CODE);

您应按如下方式处理退出事件:

public void onActivityResult(int requestCode, int responseCode, Intent intent) {
    boolean userLoggedOut = (responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) && (requestCode == MY_CUSTOM_LEADERBOARD_RESULT_CODE);
    if (userLoggedOut) {
        googleApiClient.disconnect();
    }
}

答案 1 :(得分:2)

您应该通过致电RESULT_RECONNECT_REQUIRED处理reconnect()

如果连接出现暂时性错误,则会以静默方式重新连接播放器。如果他们确实注销了,则会调用onConnectionFailed(),并且您可以将UI /游戏重置为适合未登录状态。

   if (resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
       mGoogleApiClient.reconnect();

   }