从 google 退出游戏服务排行榜屏幕
Signout from google play Game service Leaderboard screen
当排行榜显示在屏幕上时,有一个名为 "setting" 的选项。里面有一个选项 "Signout"。当我点击注销时,排行榜关闭,
问题。
如果我检查登录状态,下面的函数总是 returns 为真。意味着 mGoogleApiClient 已连接。因此,当我尝试单击显示排行榜的图标时,它始终具有 responseCode RESULT_RECONNECT_REQUIRED。
如果我重新启动我的应用程序,这个问题就会消失
public boolean isSignedIn() {
return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}
问题。
程序如何知道用户已在排行榜屏幕中退出。
由于连接处于不一致状态 (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();
}
}
您应该处理 RESULT_RECONNECT_REQUIRED by calling reconnect()。
如果连接出现暂时性错误,这将自动重新连接播放器。如果他们确实注销,将调用 onConnectionFailed(),您可以重置 UI/game 以适合未登录状态。
if (resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
mGoogleApiClient.reconnect();
}
当排行榜显示在屏幕上时,有一个名为 "setting" 的选项。里面有一个选项 "Signout"。当我点击注销时,排行榜关闭,
问题。
如果我检查登录状态,下面的函数总是 returns 为真。意味着 mGoogleApiClient 已连接。因此,当我尝试单击显示排行榜的图标时,它始终具有 responseCode RESULT_RECONNECT_REQUIRED。
如果我重新启动我的应用程序,这个问题就会消失
public boolean isSignedIn() {
return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}
问题。
程序如何知道用户已在排行榜屏幕中退出。
由于连接处于不一致状态 (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();
}
}
您应该处理 RESULT_RECONNECT_REQUIRED by calling reconnect()。
如果连接出现暂时性错误,这将自动重新连接播放器。如果他们确实注销,将调用 onConnectionFailed(),您可以重置 UI/game 以适合未登录状态。
if (resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
mGoogleApiClient.reconnect();
}