谷歌游戏服务退出登录回调函数

3
我希望将Google Play游戏服务应用到我的应用程序中。我成功实现了在启动时自动登录用户,并显示排行榜和上传玩家的得分。
我也想处理玩家退出登录。目前,玩家可以从Google Play服务排行榜窗口注销。我的问题是如何实现一个接口来检测用户从服务窗口注销。
图片链接:http://i.imgur.com/FlAVSbF.jpg
2个回答

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接