检测用户退出 Google Play 游戏登录

Posted

技术标签:

【中文标题】检测用户退出 Google Play 游戏登录【英文标题】:Detecting user backing out of Google Play Games Login 【发布时间】:2017-05-03 09:03:06 【问题描述】:

在自动登录的游戏中,如果用户在提示登录 Play 游戏时按下了“取消”按钮,我们如何才能检测到用户实际按下了取消按钮?

Google 改变了玩家登录 Google Play 游戏服务的方式,之前我在 onActivityResult 中检查结果代码。像这样:

protected void onActivityResult(int request, int resultCode, Intent data) 
    
    if (request == RC_SIGN_IN)

        if(resultCode==0)
            //User has aborted sign in, so show dialog and set flags to stop
            //Auto sign in here
        
    

但是,由于事情发生了变化,当按下取消时,它现在返回 10002,根据Docs,这意味着.....(我添加的重点)

登录失败时返回给调用Activity的结果代码。

尝试登录游戏服务失败。例如,如果网络不稳定、用户帐户已被禁用或无法获得同意,则可能会发生这种情况。

所以,当我检查结果代码 10002 时,我可以将我的代码放在那里以禁用自动登录,但是,如果网络连接“不稳定”或其他问题,我不希望这样做 - 仅当用户退出时.....

如何做到这一点?

【问题讨论】:

【参考方案1】:

我认为有一些连接错误的侦听器和方法,如处理连接故障指南中提到的onConnectionFailed()。

取消响应可以放在else条件中:

@@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) 
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleSignInResult(result);
     else if(resultCode == RESULT_CANCELED)
      // Do something when user clicks Cancel..
    

【讨论】:

以上是关于检测用户退出 Google Play 游戏登录的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏服务退出回调

用户退出 Google Play 服务后保存游戏的最佳做法?

如何通过 Google Play 排行榜 UI 检测退出?

实施 Google Play 游戏服务 - 如何让用户登录

Google Play 游戏强制登录

Google play 游戏服务再次显示来自 google+ 的登录屏幕