当来自您自己的用户界面时,注销或断开GamesClient很简单,例如主菜单上的按钮。
但是,用户还可以在游戏和排行榜视图中从Google Play用户界面退出游戏,例如getAllLeaderboardsIntent()。 (它有点隐藏,但是如果点击右上方的菜单,它会让你退出。)
有一些很有前途的监听器接口,比如OnSignOutCompleteListener,但它们似乎不能通过谷歌UI注销,只能通过你自己的UI调用GamesClient.signOut()。
如何检测用户是否已从排行榜或成就意图中退出?是否可以为此进行回调?
我希望能够更新我的游戏内UI以反映登录状态。
答案 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,但我不确定,如果您可以通过任何其他方式有效地进入不一致状态......