Google Play 游戏服务注销回调
Google Play Game Services Sign Out Callback
我正在尝试为我的应用程序实施 Google Play 游戏服务。我设法让用户在启动时自动登录,并显示排行榜,上传玩家的分数。
我也想处理玩家注销。目前,玩家可以从 Google Play 服务排行榜 window 注销。我的问题是如何实现一个接口来检测用户从服务 window 注销。
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
}
}
}
我正在尝试为我的应用程序实施 Google Play 游戏服务。我设法让用户在启动时自动登录,并显示排行榜,上传玩家的分数。
我也想处理玩家注销。目前,玩家可以从 Google Play 服务排行榜 window 注销。我的问题是如何实现一个接口来检测用户从服务 window 注销。
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
}
}
}