如何通过Google Play排行榜用户界面检测退出?

时间:2013-11-30 07:42:47

标签: android google-play-games

当来自您自己的用户界面时,注销或断开GamesClient很简单,例如主菜单上的按钮。

但是,用户还可以在游戏和排行榜视图中从Google Play用户界面退出游戏,例如getAllLeaderboardsIntent()。 (它有点隐藏,但是如果点击右上方的菜单,它会让你退出。)

有一些很有前途的监听器接口,比如OnSignOutCompleteListener,但它们似乎不能通过谷歌UI注销,只能通过你自己的UI调用GamesClient.signOut()。

如何检测用户是否已从排行榜或成就意图中退出?是否可以为此进行回调?

我希望能够更新我的游戏内UI以反映登录状态。

2 个答案:

答案 0 :(得分:1)

不幸的是,当您从Google Play游戏注销时,GameHelper无法检测到。

您需要做的是将其放入活动中的onActivityResult()方法中。

当res == RESULT_RECONNECT_REQUIRED为true时,我尝试使用aHelper.signOut()时遇到崩溃错误。

相反,我创建了一个resetAllValues()方法,该方法将所有值重置为GameHelper中的默认值。

在我的MainActivity.java

protected void onActivityResult(int req, int res, Intent data) {
    super.onActivityResult(req, res, data);

    if (res == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
        aHelper.resetAllValues();
    } else {
        aHelper.onActivityResult(req, res, data);
    }
}

我在GameHelper.java中的方法

public void resetAllValues()
{
    mProgressDialog = null;
    mAutoSignIn = true;
    mUserInitiatedSignIn = false;
    mConnectionResult = null;
    mSignInError = false;
    mExpectingActivityResult = false;
    mSignedIn = false;
    mDebugLog = false;
}

答案 1 :(得分:0)

复制自:

How can i check if user sign's out from games services default view?

我认为,没有优雅的解决方案。您可以在onActivityResult中检查INCONSISTENT_STATE中的response_code并切断GamesClient,但我不确定,如果您可以通过任何其他方式有效地进入不一致状态......