java.lang.IllegalStateException: GoogleApiClient еще не подключен
Я пытаюсь добавить достижения в свою игру, используя игровые сервисы Google Play. Активность в моей игре, которая отвечает за предоставление достижения, уже расширяет BaseGameActivity, и он вызывает beginUserInitiatedSignIn, когда он должен дать достижение, поэтому пользователь должен выполнить вход, но в то время, когда я разблокирую достижение для пользователя, я продолжаю получение "java.lang.IllegalStateException: GoogleApiClient еще не подключен". Может кто-нибудь сказать мне, что я делаю не так? Вот код, отвечающий за разблокировку достижения (он находится в классе, который расширяет BaseGameActivity от BaseGameUtils):
private void darConquistaDerrubouArvore(int numeroDeAcertos) {
// start the asynchronous sign in flow
mSignInClicked = true;
mGoogleApiClient.connect();
if(numeroDeAcertos <= 40)
{
try
{
beginUserInitiatedSignIn();
Games.Achievements.unlock(gameHelper.getApiClient(), "CgkIs_27xcoSEAIQAQ");
Log.i("TelaModoCasual", "usuário não está logado");
this.onSignInFailed();
}
catch(Exception exc)
{
exc.printStackTrace();
this.onSignInFailed();
}
}
}
1 ответ
Взгляните на базовый пример https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples/TypeANumber. Поток соединений для API Google является асинхронным, поэтому вы не можете разблокировать достижение, когда оно у вас есть. Существует обратный вызов onConnected(), который вызывается после установления соединения. В этом методе вы можете разблокировать достижения.
Документация для клиента API находится на http://developer.android.com/google/auth/api-client.html