从 google play 游戏服务排行榜屏幕注销

Posted

技术标签:

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

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

问题。

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

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

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

问题。

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

【问题讨论】:

返回了什么样的RESULT_RECONNECT_REQUIRED?您可以使用它来检查您的应用退出状态吗? 【参考方案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();

   

【讨论】:

以上是关于从 google play 游戏服务排行榜屏幕注销的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Play 游戏服务的排行榜中获得排名?

如何从 Google Play 游戏服务排行榜中删除被黑分数?

Google Play 排行榜 UI 颜色更改

使用 Google Play 游戏服务仅显示社交排行榜

Google play 游戏服务再次显示来自 google+ 的登录屏幕

Google Play 游戏服务 - 排行榜自动关闭