Выход из экрана лидеров игрового сервиса google play


Когда доска лидеров отображается на экране, есть опция, называемая "настройка". Внутри этого есть опция "Signout". Когда я нажал кнопку "Выход", таблица лидеров закрыта,

Вопрос.

Если я проверил статус входа в систему, функция ниже всегда возвращает true. Означает, что mGoogleApiClient подключен. и поэтому, когда я пытался щелкнуть значок, который показывает таблицу лидеров, он всегда имеет responseCode RESULT_RECONNECT_REQUIRED.

Эта проблема исчезнет, если я перезагрузки моего приложения

public boolean isSignedIn() {
    return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}

Вопрос.

Как программа узнает, что пользователь вышел из системы на экране лидеров.

2 4

2 ответа:

Вы должны поймать signout в onActivityResult и вызвать GoogleApiClient.disconnect() себя, так как соединение находится в несогласованном состоянии ( Источник).

Итак, при открытии таблицы лидеров используется следующий код:

activity.startActivityForResult(Games.Leaderboards.getLeaderboardIntent(googleApiClient, leaderboardId), MY_CUSTOM_LEADERBOARD_RESULT_CODE);

Событие signout следует обрабатывать следующим образом:

public void onActivityResult(int requestCode, int responseCode, Intent intent) {
    boolean userLoggedOut = (responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) && (requestCode == MY_CUSTOM_LEADERBOARD_RESULT_CODE);
    if (userLoggedOut) {
        googleApiClient.disconnect();
    }
}

Вы должны обработать RESULT_RECONNECT_REQUIRED, вызвав reconnect().

Если возникла временная ошибка с подключением, это автоматически восстановит соединение с плеером. Если они действительно выполнили выход, onConnectionFailed () будет вызван, и вы можете сбросить пользовательский интерфейс/игру, чтобы быть подходящим для состояния не вошел в систему.

   if (resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
       mGoogleApiClient.reconnect();

   }