我正在尝试将Google Play游戏服务应用到我的应用程序中。我设法让用户在启动时自动登录,并显示排行榜,上传玩家的分数。
我也希望处理玩家退出。玩家可以在Google Play服务排行榜窗口中注销。我的问题是如何实现一个接口来检测服务窗口中的用户注销。
答案 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
}
}
}