Google Play 游戏服务注销回调

Google Play Game Services Sign Out Callback

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

我也想处理玩家注销。目前,玩家可以从 Google Play 服务排行榜 window 注销。我的问题是如何实现一个接口来检测用户从服务 window 注销。

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

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... 
}

让我分享另一个解决方案,这在 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
        }
    }
}