Libgdx с сервисами Google Play - PullRequest
       21

Libgdx с сервисами Google Play

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

Так что я не совсем уверен, как обрабатывать вход в Google Play Services с помощью libgdx, я имею в виду, что я хотел бы попросить пользователя войти в систему при запуске приложения. Поэтому моей первой попыткой было реализовать вход в систему AndroidLauncher onCreate методом, подобным этому

protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        startSignInIntent();
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new MainGame(this), config);
    }

Сначала это выглядит так, как будто все работает нормально, приложение открывается в первый раз, когда оно запрашивает у меня вход в систему, а затем при следующем открытии приложения - нет. Но проблема здесь в том, что метод initialize вызывается независимо от того, успешно ли startSignInIntent, и я бы хотел, чтобы он вызывал initialize только при успешном входе в систему, и, возможно, закрывал приложение в случае сбоя и позволял Пользователь попробуйте еще раз, снова открыв мое приложение. Я пытался вызвать инициализацию в OnActivityResult, в result.isSuccess(), но это не сработало, думаю, его нужно вызывать в onCreate

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == RC_SIGN_IN) {

            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if(result.isSuccess()) {

                userAccount = result.getSignInAccount();
                Log.i("GoogleAccountTest", "Login Successful");


            } else {

                String message = result.getStatus().getStatusMessage();
                if(message == null || message.isEmpty()) {

                    message = "Something went wrong";

                }

                new AlertDialog.Builder(this).setMessage(message).setNeutralButton("Ok", null).show();

            }

        }

    }

Затем я попытался создать свой собственный экран входа в систему с помощью всего одной кнопки для входа в систему с помощью Google, я создал интерфейс, реализовал его в AndroidLauncher и передал его по своему методу инициализации, чтобы затем вызвать .startSignInIntent(), но проблема заключается в том, что Я все еще не ловлю погоду, звонок успешен или нет здесь.

Как мне в этом случае использовать логин Google Play Services?

1 Ответ

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

Хорошо, через несколько дней, если кто-то захочет узнать, как я справился с этим, вот мое решение:

Я создал дополнительный экран с кнопкой входа в систему, я звоню StartSignInIntent при нажатии кнопки, затем в основной деятельности я создал флаг, который я установил в true в onActivityResult, когда StartSignInIntent результат успешен. Затем на экране с кнопкой входа в методе рендеринга я проверяю этот флаг, а когда он становится истинным, я меняю свой экран на Главное меню

...