繁体   English   中英

Google Play游戏服务:奇怪的登录行为

[英]Google Play Game Services: strange sign in behavior

最近我在我的应用程序中添加了Google Play游戏服务支持(添加了BaseGameActivity和GameHelper),并且登录和注销工作流程运行良好。 在我的图形线程中,我向主活动处理程序发送消息,它调用beginUserInitiatedSignIn或signOut。 当识别过程完成时,Game Helper调用onSignInFailed或onSignInSucceeded我的活动,我可以检查isSignedIn(如果调用了onSignInSucceeded,则为true)。

但今天我发现它现在表现得很奇怪。 可悲的是,我没有备份最后一个工作版本,但是essense代码是相同的。

如果我要求应用程序登录,则显示谷歌服务登录对话框(我的设备上有2个帐户)。 我选择一个帐户,按确定,它返回到我的应用程序但是既没有调用onSignInSucceeded也没有调用onSignInFailed(之前如果我取消了这个对话框,我看到了“未知错误”消息)。 当我第二次尝试登录时,它会启动一个旋转的圆圈并无休止地等待。 如果我点击屏幕就会中止等待并返回我的视野。

但是,如果我关闭应用程序并再次启动它,它会在启动成功时登录,调用onSignSucceded并在我检查运行时保持连接状态。 它说:

onCreate: creating GamesClient
onStart.
onStart: connecting clients.
Connecting GamesClient.
onConnected: connected! client=1
All clients now connected. Sign-in successful.
All requested clients connected. Sign-in succeeded!

如果我退出然后再次尝试登录,则会显示帐户对话框并写入:

isGooglePlayServicesAvailable returned 0
beginUserInitiatedSignIn: starting new sign-in flow.
Connecting GamesClient.
onConnectionFailed: result 4
onConnectionFailed: since user initiated sign-in, trying to resolve problem.
resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{41f8a610: android.os.BinderProxy@41f8a5b0}}
result has resolution. Starting it.

当我选择一个帐户时,它返回到我的活动,并且既不调用onSignInSucceeded也不调用onSignInFailed。 如果我在运行时检查,我发现该应用未连接到谷歌服务。 当我再次尝试登录时,它会显示永久旋转的圆圈并说:

isGooglePlayServicesAvailable returned 0
beginUserInitiatedSignIn: continuing pending sign-in flow.
resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{41f8a610: android.os.BinderProxy@41f8a5b0}}
result has resolution. Starting it. 

当我点击屏幕时,圆圈中止而不调用onSignInSucceeded或onSignInFailed等等。

我无法想象出了什么问题。 处理程序在主线程上创建。 我有谷歌的例子,它登录并注销没有任何问题,就像我的应用程序一样。 有人能说出什么可能是错的吗? 谢谢!

花了两天时间才找到一个愚蠢的错误。 扩展BaseGameActivity时,请确保在活动方法中调用其所有方法(如果覆盖它们),例如:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
 super.onActivityResult(requestCode, resultCode, data);
 ....
 <our code here>
}

BaseGameActivity调用聚合的mHelper方法来完成所有魔术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM