如何通过 Google Play 排行榜 UI 检测退出?
Posted
技术标签:
【中文标题】如何通过 Google Play 排行榜 UI 检测退出?【英文标题】:How to detect sign out via the Google Play Leaderboards UI? 【发布时间】:2013-12-16 08:47:42 【问题描述】:从您自己的 UI(例如主菜单上的按钮)中退出或断开 GamesClient 非常简单。
但是,用户也可以从 Google Play UI 中的成就和排行榜视图中退出游戏,这些视图由诸如 getAllLeaderboardsIntent() 之类的 Intent 显示。 (它有点隐蔽,但如果你点击右上角的菜单,它会让你退出。)
有一些很有前途的侦听器接口,例如 OnSignOutCompleteListener,但它们似乎不适用于通过 google UI 注销,只能通过您自己的 UI 调用 GamesClient.signOut()。
如何检测到用户已从排行榜或成就意图中退出?是否有可能对此进行回调?
我希望能够更新我的游戏内 UI 以反映登录状态。
【问题讨论】:
How can i check if user sign's out from games services default view? 的可能重复项 【参考方案1】:很遗憾,GameHelper 没有检测到您何时退出 Google 玩游戏。
你需要做的是把它放在你的活动中的 onActivityResult() 方法中。
我在 res == RESULT_RECONNECT_REQUIRED 为真时尝试使用 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;
【讨论】:
【参考方案2】:复制自:
How can i check if user sign's out from games services default view?
在我看来,没有优雅的解决方案。您可以检查 onActivityResult 中的 response_code 是否为 INCONSISTENT_STATE 并切断 GamesClient,但我不确定您是否可以通过任何其他方式进入不一致状态...
【讨论】:
以上是关于如何通过 Google Play 排行榜 UI 检测退出?的主要内容,如果未能解决你的问题,请参考以下文章
Google Play 游戏 Android 排行榜意外响应代码 410
如何通过 LibGdx 使用 Google Play 游戏服务