【问题标题】:Google Play Games Leaderboard Closes AutomaticallyGoogle Play 游戏排行榜自动关闭
【发布时间】:2016-09-02 03:50:58
【问题描述】:

每次我尝试在我的应用中访问我的排行榜时,它们都会自动关闭。然而,成就完美无缺。我收到错误代码 10001 (RESULT_RECONNECT_REQUIRED)。来自 Google Play 网站,

GoogleApiClient 处于不一致状态,必须重新连接到服务才能解决问题。使用当前连接进一步调用服务不太可能成功。

但是,重新连接不起作用。

这是我发现适合我的解决方案列表

  • 重新安装应用程序
  • 从 Google Play 游戏和 Google Play 服务中删除数据
  • 检查服务设置是否正确

我用来展示排行榜的代码是:

act.startActivityForResult(Games.Leaderboards.getAllLeaderboardsIntent(client), RC_SIGN_IN);
//act.startActivityForResult(Games.Leaderboards.getLeaderboardIntent(client, act.getString(R.string.leaderboard_progression)), RC_SIGN_IN); //Single leaderboard does not work either

我们将不胜感激!

更新 1:

尝试在 onActivityResult() 中使用它:

System.out.println(client.getConnectionResult(Games.API));

但它只是输出这个:

ConnectionResult{statusCode=SUCCESS, resolution=null, message=null}

在 Google API 网站上,我的应用程序显示有很多 4xx 错误。来自http://www.websitepulse.com/kb/4xx_http_status_codes.html

4xx - 客户端错误

这组 HTTP 状态代码表示 资源请求包含错误语法或无法填写 其他一些原因,可能是由于客户端发送的错误 要求。除非响应 HEAD 请求,服务器应该 包括对错误情况的解释以及它是否是 暂时或永久的状况。这些状态码适用于 任何请求方法。

因此,我可以假设问题出在客户端。但我不知道可能出了什么问题。我检查了我的 SHA1、应用程序 ID 等,并且成就工作正常。我还尝试将 build.gradle 的依赖项更新为最新版本的 Play Services,但没有解决任何问题。

【问题讨论】:

  • 检查这个SO thread,它可能会有所帮助。
  • 我发誓我已经这样做了至少两次,我刚刚又做了一次,它成功了!谢谢!

标签: android google-play-games


【解决方案1】:

所以我终于想通了...虽然我之前尝试从 Play 游戏和 Play 服务中清除数据但没有成功,但我再次尝试了它,它成功了。我想通了为什么;原来我用的:

Games.Leaderboards.submitScore(client, act.getString(id), SCORE);

提交排行榜分数。但是,在尝试修复我的排行榜时,我使用的是:

PendingResult r = Games.Leaderboards.submitScoreImmediate(client, act.getString(id), SCORE);
ResultCallback callback = new ResultCallback()
{
    @Override
    public void onResult(@NonNull Result result)
    {
        //System.out.println(result.getStatus());
        //System.out.println(result.getStatus().getStatusMessage());
        //System.out.println(result.getStatus().hasResolution());
    }
};
r.setResultCallback(callback);

由于某种原因,这行得通。我曾多次尝试在原始方法和新方法之间来回切换,在每次测试之间清除数据。排行榜仅适用于新解决方案。我不知道为什么,但我很高兴它有效。

【讨论】:

    【解决方案2】:

    排行榜也有问题。这个解决方案帮助解决了我的问题,谢谢,但是游戏。排行榜,submitScoreImmediate 现已弃用。

    或者你可以使用:-

    yourLeaderboardsClient.submitScoreImmediate(LEADERBOARD_ID, SCORE); 
    

    同样有效且未弃用。所以如果有人遇到这样的问题 - 你可以使用这样的变体,希望它会有所帮助。

    【讨论】:

    • 我正在使用较新的 API,但我遇到了同样的错误,只是在某些设备上 com.google.android.gms.common.api.ApiException: 26502: CLIENT_RECONNECT_REQUIRED,不知道为什么...有解决方案吗?在新 API 中没有重新连接选项,并且不推荐使用此错误。这甚至意味着什么?
    • @LuanNico 抱歉,如果您正确实施排行榜,我不知道为什么会发生这种情况。我建议您根据官方文档重新检查您的排行榜逻辑 - 可能您仍在以某种方式使用旧 API。
    猜你喜欢
    • 2016-08-09
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2017-01-30
    • 2013-05-12
    • 1970-01-01
    • 2015-07-14
    • 2016-02-11
    相关资源
    最近更新 更多