每当我尝试在我的应用中访问我的排行榜时,它们会自动关闭。但是,这些成就完美无瑕。我收到错误代码10001(RESULT_RECONNECT_REQUIRED)。来自Google Play网站
GoogleApiClient处于不一致状态,必须重新连接到该服务才能解决问题。使用当前连接进一步调用服务不太可能成功。
然而,重新连接不起作用。
以下是我发现不为我工作的解决方案列表
我用来展示排行榜的代码是:
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
非常感谢帮助!
在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服务,但它没有修复任何内容。
答案 0 :(得分: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);
由于某种原因,这是有效的。我尝试在原始方法和新方法之间来回切换多次,在每次测试之间清除数据。排行榜仅适用于新解决方案。我不明白为什么,但我很高兴它有效。
答案 1 :(得分:0)
排行榜也存在问题。这个解决方案有助于解决我的问题,谢谢,但游戏。排行榜,submitScoreImmediate现已弃用。
或者您可以使用: -
yourLeaderboardsClient.submitScoreImmediate(LEADERBOARD_ID, SCORE);
同样适用,不予弃用。因此,如果有人遇到这样的问题 - 你可以使用这种变体,希望它会有所帮助。