当屏幕上显示排行榜时,会出现一个名为“设置”的选项。在里面有一个选项“Signout”。当我点击退出时,排行榜已关闭,
如果我检查了登录状态,则以下功能始终返回true。表示mGoogleApiClient已连接。因此,当我尝试单击显示排行榜的图标时,它始终具有responseCode RESULT_RECONNECT_REQUIRED。
如果我重启我的应用程序
,这个问题就消失了public boolean isSignedIn() {
return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}
该程序如何知道用户已在排行榜屏幕中注销。
答案 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();
}