2014-10-11 2 views
4

В моей игре в настоящее время используются кнопки входа и выхода из меню, чтобы использовать рейтинги Google Play/Achievements. К сожалению, пользователь также может выйти из пользовательского интерфейса Google Play, но GameHelper.isSignedIn() все еще возвращает true, когда они делают это через пользовательский интерфейс Google. Когда пользователь пытается проверить таблицу лидеров или достижение после того, как пользователь выберет этот способ, игра выйдет из строя.Выйти из Google Play UI

Кто-нибудь знает обновленный способ проверить, не выйдет ли пользователь через интерфейс? Я говорю обновление, поскольку я видел несколько потоков в stackoverflow, которые не работают.

+1

возможно дубликат [Как справиться с отключиться от Google игровых сервисов?] (Http://stackoverflow.com/questions/26162684/how-to-handle-disconnect-from-google-game -услуги) – free3dom

+0

Отъезд мой [ответ] (http://stackoverflow.com/questions/26162684/how-to-handle-disconnect-from-google-game-services/26186889#26186889), который все еще работает - я просто протестировал его в последней версии Служб Google Play (6.1.71 (1501030-038)). – free3dom

+0

Спасибо, я немного поменял его и удалил RequestCode if (resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) { \t gameHelper.disconnect(); \t} else { \t gameHelper.onActivityResult (requestCode, resultCode, data); \t} –

ответ

0

Я создаю достижение с именем Sign in Play Games и пытаюсь разблокировать его onSingIn().

@Override 
public boolean unlockAchievements() { 
    boolean r = true; 

    if (gameHelper.isSignedIn()){ 
     try{ 
      Games.Achievements.unlock(gameHelper.getApiClient(), getString(R.string.achievement_sign_in_play_games)); 
     } 
     catch(Exception ex){ 
      r = false; 
     } 
     finally{ 
     } 
    } 
    else{ 
     r = false; 
    } 

    return r; 
} 

При изменении размера случае экран, где моя кнопка Войти, я реализую этот код:

@Override 
    public void resize(int width, int height) { 

     //... 

     if(game.gameHelper.isSignedIn()){ 
      if (!game.gameHelper.unlockAchievements()){ 
       game.gameHelper.forceSignOut(); 
      } 
     } 

    } 

forceSignOut() было реализовать на классе GameHelper

public void forceSignOut() { 
    if (mGoogleApiClient != null){ 
     mGoogleApiClient.disconnect(); 
    } 
} 

И, наконец, в BaseGameActivity :

protected void forceSignOut(){ 
    mHelper.forceSignOut(); 
} 

Не забудьте реализовать GameServiceInterface:

public void forceSignOut(); 
1

Я просто следовал https://developers.google.com/games/services/training/signin и все работает отлично. Он использует

boolean mExplicitSignOut = false; 
boolean mInSignInFlow = false; // set to true when you're in the middle of the 
          // sign in flow, to know you should not attempt 
          // to connect in onStart() 
GoogleApiClient mGoogleApiClient; // initialized in onCreate 

@Override 
protected void onStart() { 
    super.onStart(); 
    if (!mInSignInFlow && !mExplicitSignOut) { 
    // auto sign in 
    mGoogleApiClient.connect(); 
    } 
} 

@Override 
public void onClick (View view) { 
if (view.getId() == R.id.sign_out_button) { 
    // user explicitly signed out, so turn off auto sign in 
    mExplicitSignOut = true; 
    if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) { 
     Games.signOut(mGoogleApiClient); 
     mGoogleApiClient.disconnect(); 
    } 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^