Hải*_*ong 28 android google-play-services google-play-games
谷歌提供BaseGameUtils图书馆,并建议我们扩展它BaseGameActivity.但是,该课程使游戏在游戏开始时自动登录.如果玩家不想或不能连接到他的Google帐户,那么在游戏开始时这可能非常耗时.
所以我不想要这个功能.相反,我想提供一个登录按钮.只有当他点击该按钮时才能连接播放器.从那时起,每次玩家开始游戏时,他都会自动连接到他的Google帐户,而无需点击任何按钮.我怎样才能做到这一点?
Hải*_*ong 44
好的,我已经弄清楚,默认情况下,最大自动登录时间是3,这意味着如果用户取消3次,那么应用程序将永远不会再次(除非您清除应用程序的数据)自动登录.它已存储在GameHelper.java
// Should we start the flow to sign the user in automatically on startup? If so, up to
// how many times in the life of the application?
static final int DEFAULT_MAX_SIGN_IN_ATTEMPTS = 3;
int mMaxAutoSignInAttempts = DEFAULT_MAX_SIGN_IN_ATTEMPTS;
Run Code Online (Sandbox Code Playgroud)
它还提供了设置此最大数量的功能
public void setMaxAutoSignInAttempts(int max) {
mMaxAutoSignInAttempts = max;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您根本不想要任何自动登录尝试,只需调用此函数即可
如果您不想扩展BaseGameActivity,那就是这样
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
gameHelper.setup(this);
gameHelper.setMaxAutoSignInAttempts(0);
Run Code Online (Sandbox Code Playgroud)
或者,如果您扩展BaseGameActivity
getGameHelper().setMaxAutoSignInAttempts(0);
Run Code Online (Sandbox Code Playgroud)
osm*_*alp 10
在GameHelper.java文件中有一个boolean属性mConnectOnStart,默认情况下它被设置为true.只需false改为:
boolean mConnectOnStart = false;
Run Code Online (Sandbox Code Playgroud)
此外,还提供了一种从类外部管理此属性的方法:
// Not recommended for general use. This method forces the "connect on start"
// flag to a given state. This may be useful when using GameHelper in a
// non-standard sign-in flow.
public void setConnectOnStart(boolean connectOnStart) {
debugLog("Forcing mConnectOnStart=" + connectOnStart);
mConnectOnStart = connectOnStart;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用上述方法来自定义登录过程.就我而言,与你类似,我不想第一次自动连接.但如果用户之前登录过,我确实想要自动连接.为了实现这一点,我将类中的getGameHelper()方法更改为BaseGameActivity:
public GameHelper getGameHelper() {
if (mHelper == null) {
mHelper = new GameHelper(this, mRequestedClients);
mHelper.enableDebugLog(mDebugLog);
googlePlaySharedPref = getSharedPreferences("GOOGLE_PLAY",
Context.MODE_PRIVATE);
boolean wasSignedIn = googlePlaySharedPref.getBoolean("WAS_SIGNED_IN", false);
mHelper.setConnectOnStart(wasSignedIn);
}
return mHelper;
}
Run Code Online (Sandbox Code Playgroud)
每一次,getGameHelper()方法是从所谓的onStart()在BaseGameActivity.在上面的代码中,我刚刚添加了共享首选项,以便在用户之前登录时保留.并setConnectOnStart()根据该案例称为方法.
最后,"WAS_SIGNED_IN"在用户启动登录过程后,不要忘记将(或其他用不同名称定义的内容)共享首选项设置为true.您可以onSignInSucceeded()在BaseGameActivity类中的方法中执行此操作.
希望这会帮助你.祝好运.
| 归档时间: |
|
| 查看次数: |
27239 次 |
| 最近记录: |