如何知道用户是否授权使用Google Play游戏服务

时间:2014-11-10 23:54:38

标签: android google-play-games

我在我的应用中使用GPGS取得了成就。我想在启动时连接到GPGS,以便我可以加载和设置用户成就。但是,我希望仅在用户通过单击应用程序中的连接按钮之前连接到它时进行连接。

使用案例1:

- User opens app
- App does not connect to GPGS

用例2:

- User opens app
- Clicks button to connect to GPGS
- Closes app

days later
- User opens app
- App connects to GPGS

我曾经在共享首选项中存储一个布尔标志,以了解该应用是否已获得授权。问题是,我无法知道用户何时在成就活动中注销或断开设备谷歌设置中的应用程序。

我想做的是像

if(mGoogleApiClient.isAutorized(){
    mGoogleApiClient.connect();
}

我有什么想法可以判断该应用是否获得授权?

1 个答案:

答案 0 :(得分:1)

当您致电mGoogleApiClient.connect()时,除非登录成功,否则用户无法看到此信息(并且横幅会显示其个人资料图片)。

您必须使用result.startResolutionForResult()中的result专门致电onConnectionFailed以启动用户可见的登录流程。只要您在用户点击登录按钮之前不打电话,您就可以获得所需的行为。

请注意,如果您使用的是GameHelper / BaseGameActivity课程,则可能需要停用default behavior of auto-login,并且只能调用beginUserInitiatedSignIn()(执行上述{{1}当用户专门点击登录按钮时,请求你。

FAQ州:

  

[4]为什么GameHelper / BaseGameActivity试图登录   应用程序启动?

     

BaseGameActivity和GameHelper的默认行为是向用户显示       应用程序启动后立即进行登录流程(同意对话框等)。       当然,一旦用户第一次登录,他们就不会看到       同意再次流动,这将是一次无缝的体验。这很重要       让用户尽早登录,以便您的应用程序可以使用       立即获得Google Play游戏API的优势(例如,保存       用户使用Cloud Save,解锁成就等方面的进度。如果是用户       取消登录流程,BaseGameAcitivity / GameHelper会记住这一点       消除。如果取消的总数达到预定义的       最大值(默认情况下为3),将不再提示用户登录       应用启动。如果发生这种情况,他们仍然可以通过点击登录       您的应用程序的登录按钮,如果您提供一个。

     

[5]我不喜欢新的"自动登录" GameHelper的功能。怎么能   我禁用了吗?

     

要禁用此功能并返回旧行为,您可以进行编辑       GameHelper.java并将DEFAULT_MAX_SIGN_IN_ATTEMPTS常量设置为0,或者       在调用之前,在运行时调用GameHelper.setMaxAutoSignInAttempts(0)       GameHelper.setup()(或者,相应地,来自你的Activity' onCreate       法)。