【问题标题】:Signout from google play Game service Leaderboard screen从 google play 游戏服务排行榜屏幕注销
【发布时间】:2016-02-11 02:31:35
【问题描述】:

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

问题。

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

如果我重新启动我的应用程序,这个问题就会消失

public boolean isSignedIn() {
    return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}

问题。

程序如何知道用户已在排行榜屏幕中退出。

【问题讨论】:

  • 返回了什么样的RESULT_RECONNECT_REQUIRED?您可以使用它来检查您的应用退出状态吗?

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


【解决方案1】:

由于连接处于不一致状态 (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();
    }
}

【讨论】:

    【解决方案2】:

    你应该通过调用reconnect()来处理RESULT_RECONNECT_REQUIRED

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-09
      • 2013-05-12
      • 1970-01-01
      • 2017-10-05
      • 2016-10-03
      • 1970-01-01
      • 2014-03-26
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多