Таблица лидеров Google Play Services - результаты публикуются только при открытии таблицы лидеров - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть игра для Android с реализацией Leaderboard. Моя проблема в том, что все выглядит хорошо для пользователя, и его счет появляется только тогда, когда он открывает таблицу лидеров. В действии я вызываю это в onCreate:

if (!isSignedIn()) {
        beginUserInitiatedSignIn();
    }
    if (getApiClient().isConnected()) {
        Games.Leaderboards.submitScore(getApiClient(), getString(R.string.leaderboard), totalScoreLong);
    }

При открытии таблицы лидеров:

if (!isSignedIn()) {
                beginUserInitiatedSignIn();
            } else {
                startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), getString(R.string.leaderboard)), 2);
            }

Также, когда пользователь заканчивает раунд в игре, я пытаюсь отправить обновленный счет:

if (getApiClient().isConnected()) {
            Games.Leaderboards.submitScore(getApiClient(), getString(R.string.leaderboard), totalLong);
        }

Что я делаю не так? Я не вижу пользователя в списке лидеров, пока он не откроет его ... Думаю, он не должен работать таким образом, потому что я видел другие приложения с тысячами пользователей, и я не думаю, что все видят списки лидеров. У меня есть много пользователей в приложении, так что это не должно быть проблемой, и я также проверил с 2 устройствами, и пользователь не был виден.

1 Ответ

0 голосов
/ 10 сентября 2018

Можете ли вы попробовать сделать то же самое с GoogleApi вместо GoogleApiClient?Таким образом вы избавились бы от обработки состояния соединения, где у вас могут возникнуть некоторые проблемы.

Вы также можете использовать метод submitScoreImmediate, который попытается асинхронно загрузить счет и вернуть вам данные в результате.

Пример:

Games.getLeaderboardsClient(ctx, signIn)
    .submitScoreImmediate(id, score)
    .addOnSuccessListener(
      new OnSuccessListener<ScoreSubmissionData>() {
        @Override
        public void onSuccess(ScoreSubmissionData data) {
          ...
        }
      });
...