OGeek|极客世界-中国程序员成长平台

标题: java - Google Play 游戏服务 : strange sign in behavior [打印本页]

作者: 菜鸟教程小白    时间: 2022-11-6 16:15
标题: java - Google Play 游戏服务 : strange sign in behavior

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

但今天我发现它现在的行为很奇怪。遗憾的是我没有备份最后一个工作版本,但本质代码是一样的。

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

尽管我关闭应用程序并再次启动它,但它会在启动时成功登录,调用 onSignSucceded 并在我 checkin 运行时保持连接。它说:

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.

当我选择一个帐户时,它会返回到我的 Activity 中,并且不会调用 onSignInSucceeded 和 onSignInFailed。如果我 checkin 运行时,我会看到该应用未连接到谷歌服务。 当我再次尝试登录时,它会显示永远旋转的圆圈并说:

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 等等。

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



Best Answer-推荐答案


花了 2 天时间才发现一个愚蠢的错误。当您扩展 BaseGameActivity 时,请确保在您的 Activity 方法中调用其所有方法(如果您覆盖它们),例如:

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

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

关于java - Google Play 游戏服务 : strange sign in behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802775/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4