玩游戏排行榜拒绝在提交分数后打开

时间:2017-01-17 20:51:02

标签: android google-play-games

我遇到了一个非常恼人的问题,我之前在任何使用过Google Play游戏API的游戏中都没有这个问题。

我的游戏运行良好,尚未发布,但API已发布,一切正常,从提交分数到查看排行榜。

现在,我需要先解释这个问题。

Google开发者控制台上的我的API帐户有两个Oauth键,即调试和realese。当我完成游戏并试图查看排行榜时,我没有任何问题地查看它,但是当试图提交分数时,排行榜打开然后关闭而不显示我的本地/全球分数,这就像排行榜中的一个小故障。 / p>

我通过发布游戏服务解决了这个问题。现在我遇到了同样的问题,但是发布的APK,isseu已在Debug中修复,我已经尝试了与发布的APK相同的步骤,没有任何效果。

如果已提交分数,则每个Google帐户都会遇到查看排行榜的相同问题,当用户尝试仅查看排行榜时不会出现问题。

调试和发布密钥都添加到Google Dev API Control中的firebase和Oauth,并且已经使用作为测试人员添加了电子邮件。

长话短说:提交分数后,排行榜不会打开(排行榜菜单会显示,但在选择排行榜时,会发生这种错误的结束)。

没有捕获到logcat,我的代码如下:

连接代码/不需要

查看排行榜:

private void OpenLeaderboards() {
    if(mGoogleApiClient.isConnected()){
        try {
            UpdateAddictionLeaderboard(ReturnSavedClick());
            startActivityForResult(Games.Leaderboards.getAllLeaderboardsIntent(mGoogleApiClient), REQUEST_LEADERBOARD);
        } catch (SecurityException e){
            mGoogleApiClient.disconnect();
            mGoogleApiClient.connect();
        }
    } else {
        isTried = false;
        mGoogleApiClient.connect();
    }

}

提交分数:

private void UpdateTopScore(final String LeaderBoard, final String Title, final int mSavedScore, final int mMethod){
    Games.Leaderboards.loadCurrentPlayerLeaderboardScore(
            mGoogleApiClient,LeaderBoard,
            LeaderboardVariant.TIME_SPAN_ALL_TIME,
            LeaderboardVariant.COLLECTION_PUBLIC)
            .setResultCallback(new ResultCallback<Leaderboards.LoadPlayerScoreResult>() {

                @Override
                public void onResult(@NonNull Leaderboards.LoadPlayerScoreResult arg0) {
                    if(isScoreResultValid(arg0)){
                        long score = arg0.getScore().getRawScore();

                        Bundle bundle = new Bundle();
                        bundle.putLong(FirebaseAnalytics.Param.SCORE, score);
                        bundle.putString(LeaderBoard, Title + " Leaderboard");
                        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.POST_SCORE, bundle);

                        if(mSavedScore > score){
                            Games.Leaderboards.submitScore(mGoogleApiClient, LeaderBoard, mSavedScore);
                        } else {
                            if(mMethod == 0) {
                                mEditor.putInt(FIRSTSCORE, mSavedScore).apply();
                            } else {
                                mEditor.putInt(SECONDSCORE, mSavedScore).apply();
                            }
                        }
                    } else {
                        Games.Leaderboards.submitScore(mGoogleApiClient, LeaderBoard, mSavedScore);
                    }
                }

            });
}

private boolean isScoreResultValid(final Leaderboards.LoadPlayerScoreResult scoreResult) {

    return scoreResult != null && GamesStatusCodes.STATUS_OK == scoreResult.getStatus().getStatusCode() && scoreResult.getScore() != null;
}

0 个答案:

没有答案