如何知道用户是否拒绝从Google Play游戏服务中进行登录?

3
根据Google Play游戏服务的质量检查清单,应用程序必须尝试“在游戏启动时自动提示玩家登录”并“记住如果玩家拒绝登录”,不要让应用程序每次启动时都向用户询问。那么,这个事件是什么呢?谷歌文档中没有任何参考资料。
请注意,在投票此问题是否重复之前,请注意我不是在询问如何知道用户是否已注销。我想做的是在第一次请求时获取用户的答案(如果被拒绝)并保留它。
2个回答

0
有点晚了,不知道你解决了没有,但我刚刚遇到了同样的问题。下面是我是如何解决的。
我有一个基础的 Activity 来处理 Google Play 游戏登录,我把这段代码放在里面。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        mResolvingConnectionFailure = false;
        if (resultCode == RESULT_OK) {
            googleApiClient.connect();
        } else if (resultCode == RESULT_CANCELED) {
            /*
            * Put a boolean in your SharedPreferences 
            */
        } else {
            BaseGameUtils.showActivityResultError(this, requestCode, resultCode, R.string.signin_other_error);
        }
    }
}

-1
根据您的链接,记住玩家是否拒绝登录的最佳实践如下:
1.5 最佳实践:记住玩家是否拒绝登录。
如果玩家在游戏初始启动登录流程时拒绝登录(例如,在登录界面点击取消),您仍应允许玩家继续进行游戏。 当玩家再次启动游戏时,不要自动调用登录流程。这样可以避免玩家每次开始游戏时都需要重复拒绝登录。 唯一的例外是,如果玩家尝试访问依赖于登录状态的游戏功能(例如,开始多人对战),在继续游戏之前提示他们进行登录。
粗体字的短语给出了一个很好的提示。我可以向您展示一种要求用户登录到Google的方法:
new AlertDialog.Builder(YourActivity.this)
            .setTitle("Sign-in to Google")
            .setMessage("Please sign-in to Google services")
            .setPositiveButton(android.R.string.sign_in, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                    //Sign in the user

                }
            })
            .setNegativeButton(android.R.string.cancel_sign_in, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                    // This is where you want to remember their choice:
                    SharedPreferences.Editor editor = prefs.edit();
                    editor.putBoolean("declined", true);
                    editor.commit();
                }
            })
            .setIcon(android.R.drawable.ic_dialog_alert)
            .show();

现在当你启动应用程序时,调用SharedPreferences并检查保存的布尔值,如果"declined" = true,则不再显示alertDialog。就像这样:
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences prefs = getSharedPreferences("MyAppPrefs", MODE_PRIVATE);
    Boolean declined = prefs.getBoolean("declined", false);
    if(!declined){
        //show dialog again
    }
}

1
谢谢你的回答,但我不能将其标记为正确,因为当应用程序启动并尝试自动连接时,只有在之前未被允许过的情况下才会显示用户界面,并且该界面使用了谷歌内置的对话框窗口,所以你无法控制它。 - undefined

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