从 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 游戏服务排行榜中删除被黑分数?