Google Play游戏服务退出回拨

时间:2015-11-04 12:50:40

标签: android libgdx google-play google-play-services google-play-games

我正在尝试将Google Play游戏服务应用到我的应用程序中。我设法让用户在启动时自动登录,并显示排行榜,上传玩家的分数。

我也希望处理玩家退出。玩家可以在Google Play服务排行榜窗口中注销。我的问题是如何实现一个接口来检测服务窗口中的用户注销。

http://i.imgur.com/FlAVSbF.jpg

2 个答案:

答案 0 :(得分:1)

退出没有回调是API的一部分。您可以查看GoogleAPIClient.isConnected(),或者如果使用C ++ SDK,请致电 gpg::GameServices::IsAuthorized()

因此,当您显示排行榜时,您可以检查onActivityResult以查看它们是否已连接。如果不是,则很可能意味着他们从“设置”菜单中退出。

public void showLeaderboard() { startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mGoogleApiClient,         LEADERBOARD_ID),REQUEST_LEADERBOARD); }

public void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == REQUEST_LEADERBOARD) {
      // check if user signed out
      mExplicitSignOut = mGoogleApiClient != null && !mGoogleApiClient.isConnected();
  }
  // rest of onActivityResult... 
}

答案 1 :(得分:0)

让我分享另一个解决方案,该解决方案在2019年似乎更可行:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == RESULT_CODE_GOOGLE_PLAY_GAMES) {
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            GoogleSignInAccount account = task.getResult(ApiException.class);
            // User is signed in
        } catch (ApiException apiException) {
            // User is signed out
        }
    }
}
相关问题