登录/重试失败时的 Google Play 游戏服务怪异(活动生命周期)

Posted

技术标签:

【中文标题】登录/重试失败时的 Google Play 游戏服务怪异(活动生命周期)【英文标题】:Google Play Game Services weirdness on failed login/retry (Activity Lifecycle) 【发布时间】:2014-08-27 09:44:35 【问题描述】:

问题

用户按下“分数”按钮(启动登录过程以通过 beginUserInitiatedSignIn() 登录 Google Play 游戏服务),然后在成功登录之前按下“主页”键在返回应用程序时,播放服务似乎尝试“从上次中断的地方继续”并继续登录。但它并不完全正确。

onActivityResult 一开始返回 0(不成功,我希望它被中断),然后尝试再次登录并返回 -1,这意味着 成功 很好!但是不,如果我调用 getGameHelper().isSignedIn();它返回 false

这里发生了什么?!有什么我可能会忽略或我可以检查的东西吗?

【问题讨论】:

【参考方案1】:

在您接到ConnectionCallbacks.onConnected(或onSignInSucceeded,如果您使用的是GameHelper)的电话之前,您尚未连接。

您的onActivityResult 应在收到成功响应时调用GoogleApiClient.connect(),以便建立适当的连接并进行您的onConnected 回调。

【讨论】:

太棒了!知道了,谢谢@ianhanniballake。我想我现在明白了。 onActivityResult 的结果仅表示登录活动已成功完成 - 不是用户已成功登录?但它确实提出了一个问题,如果它中止,然后尝试再次登录,如果让它单独尝试,为什么它不成功登录?!尽管你已经回答了这个问题,但我会问另一个问题 - 干杯:-) 基本上,startResolutionForResult/onActivityResult 舞蹈只是为了获得用户权限,以便 Google Play 服务可以为用户生成身份验证令牌。然后connect() 是使用 Google Play 服务检查以检索有效身份验证令牌的原因,因此您需要额外的connect() 调用以在onActivityResult 之后检索令牌。这也是为什么在后续登录时,一次调用 connect() 就足够了 - 已经有一个身份验证令牌,所以不需要做任何其他事情。 感谢@ianhanniballake,虽然还是有点困惑,但我开始更加理解它了。你能看看我的另一个问题吗?谢谢:-)

以上是关于登录/重试失败时的 Google Play 游戏服务怪异(活动生命周期)的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏登录失败

Google play 游戏服务登录失败

Google Play 游戏服务登录失败

登录失败。Google Play 游戏 Libgdx

下载了谷歌Play商店,注册成功却不能登录,与Google服务通信时出现问题。请稍后重试,我是小米

Android 工作室 - Google Play 游戏服务登录失败