Google Play 游戏服务 - 欢迎 <名称> 弹出窗口不一致
Posted
技术标签:
【中文标题】Google Play 游戏服务 - 欢迎 <名称> 弹出窗口不一致【英文标题】:Google Play Game Services - Welcome <Name> Popup Inconsistent 【发布时间】:2013-09-27 20:23:06 【问题描述】:我在其他线程中尝试了一些建议(例如在启动时强制注销),但我没有找到解决此问题的方法。问题在于这个弹出窗口:
看起来很不一致,很少出现。
我在我的应用程序启动中添加了一个GameHelper.logout()
,试图始终显示此消息,但它没有。
通常情况下,它根本不会出现。
getGameClient().getCurrentUser().getIconImageUri()
之类的调用方法都可以,我可以用这种方式显示图像。此外,我可以发送邀请,人们会和我一起坐在游戏大厅里。
当他们点击游戏主屏幕上的 Google+ 登录按钮时,我是否可以始终如一地显示此消息?
需要注意的是,我使用的是 LibGDX、BaseGameUtils(GameHelper.java)
和 Google Services
(当然)。
还有其他人对此有疑问吗?
谢谢!
【问题讨论】:
只是这样我可以尝试一些东西。您是否在以下情况下看到它:在用户注销后(以便您的 Google+ 按钮变回“使用 google 登录”或类似的东西)然后立即重新登录,您是否看到欢迎弹出窗口? 我没有。例如,调用 GameHelper.logout() 后跟 GameHelper.login() 不会导致显示此消息。但是,如果我长时间(多个小时)没有在申请中,则会出现该消息。我几乎觉得令牌问题一直存在于 Google 一方,并阻止我“随意”显示此消息。您以前是否处理过这个问题或有任何见解? 【参考方案1】:好的,所以我将在此处发布我是如何设置的,使用 LibGDX 和 GPGS,并且在注销后登录时显示弹出窗口没有任何问题。
首先声明我的 android 项目:
public class MainActivity extends AndroidApplication implements RequestHandler, GameHelperListener,
GoogleInterface, RealTimeMessageReceivedListener, RoomStatusUpdateListener, RoomUpdateListener,
OnInvitationReceivedListener, RealTimeReliableMessageSentListener, OnImageLoadedListener, OnStateLoadedListener, ConnectionCallbacks
private GameHelper mHelper;
private GameHelperInterface mGHInterface = null;
private ConfirmInterface mConfirmInterface = null;
private Handler libGDXHandler;
GoogleInterface 用于从 LibGDX 线程传递到 Android 线程,GameHelperInterface 和 ConfirmInterface 用于将内容从 android 传递到房子的 libGDX 端(我使用 confirmInteface 来登录东西,另一个用于消息传递等...)处理程序是确保来自 LibGDX 端的任何内容正确发布在 Android 线程上(就像来自 Android 的 libGDX 端的任何内容使用 Gdx.app.postRunnable() 发布)
现在我在 onCreate() 中声明
.. setup the gameView etc..
mHelper.setup(this, GameHelper.CLIENT_GAMES | GameHelper.CLIENT_APPSTATE | GameHelper.CLIENT_PLUS, null);
mHelper.getPlusClient().registerConnectionCallbacks(this);
onStart 和 onStop :
@Override
public void onStart()
super.onStart();
mHelper.onStart(this);
@Override
public void onStop()
super.onStop();
mHelper.onStop();
Android 代码中的 Login 和 Logout 方法
@Override
public void Login()
libGDXHandler.post(new Runnable()
@Override
public void run()
dLog("beginUserInitatedSignIn()");
//mHelper.signOut();
mHelper.beginUserInitiatedSignIn();
);
@Override
public void LogOut()
iServerBadAttempts = -1;
mHelper.signOut();
使用 iServerBadAttempts 以便当我在 libGDX 中启动 Screen 进程时,我可以要求 Android 端给我该变量...如果它是 -1,那么我知道之前没有尝试过登录,并且可以适当地设置我的谷歌登录按钮,否则我会检查连接状态和其他一些事情来设置我正确使用的按钮。
为了以防万一,下面是我告诉我的 libGDX 代码 mHelper 成功登录的方式:
@Override
public void onSignInSucceeded()
dLog("signed in");
mConfirmInterface.googleSucceeded();
if (mHelper.getInvitationId() != null)
acceptInviteToRoom(mHelper.getInvitationId());
mConfirmInterface.acceptedInvitation();
这里是登录和退出的logcat
09-24 09:14:31.495:I/SplashScreen(6021):进行 Google 登录 09-24 09:14:31.495: D/LDGame MainActivity(6021): beginUserInitatedSignIn() 09-24 09:14:31.495:D/Helper(6021):启动用户发起的登录流程。 09-24 09:14:31.495: D/Helper(6021): isGooglePlayServicesAvailable 返回 0 09-24 09:14:31.495: D/Helper(6021): beginUserInitiatedSignIn: 开始新的登录流程。 09-24 09:14:31.495:D/Helper(6021):开始连接。 09-24 09:14:31.495: D/Helper(6021): 状态改变 DISCONNECTED -> CONNECTING 09-24 09:14:31.495:D/Helper(6021):connectNextClient:请求的客户端:7,连接的客户端:0 09-24 09:14:31.495:D/Helper(6021):待定客户:7 09-24 09:14:31.495:D/Helper(6021):连接 GamesClient。 09-24 09:14:31.535: D/Helper(6021): onConnectionFailed 09-24 09:14:31.535:D/Helper(6021):连接失败: 09-24 09:14:31.535:D/Helper(6021):-代码:SIGN_IN_REQUIRED(4) 09-24 09:14:31.535: D/Helper(6021): - 可解析: true 09-24 09:14:31.535: D/Helper(6021): - 详细信息: ConnectionResultstatusCode=SIGN_IN_REQUIRED, resolution=PendingIntent41d914d0: android.os.BinderProxy@41ef40c8 09-24 09:14:31.535: D/Helper(6021): onConnectionFailed: 由于用户启动登录,正在解决问题。 09-24 09:14:31.535: D/Helper(6021): resolveConnectionResult: 试图解决结果: ConnectionResultstatusCode=SIGN_IN_REQUIRED, resolution=PendingIntent41d914d0: android.os.BinderProxy@41ef40c8 09-24 09:14:31.535:D/Helper(6021):结果有分辨率。启动它。 09-24 09:14:31.615:I/ScreenLog(6021):屏幕暂停:SplashScreen 09-24 09:14:31.615: D/SensorManager(6021): unregisterListener:: Listener= com.badlogic.gdx.backends.android.AndroidInput$SensorListener@41dc06e0 09-24 09:14:31.615:I/AndroidGraphics(6021):暂停 09-24 09:14:31.615: D/Sensors(6021): Remain listener = Sending .. normal delay 200ms 09-24 09:14:31.615:I/传感器(6021):sendDelay --- 200000000 09-24 09:14:31.615: D/SensorManager(6021): JNI-sendDelay 09-24 09:14:31.615: I/SensorManager(6021): 设置正常延迟 = true 09-24 09:14:31.615: D/SensorManager(6021): unregisterListener:: Listener= com.badlogic.gdx.backends.android.AndroidInput$SensorListener@41db99a0 09-24 09:14:31.615: D/Sensors(6021): Remain listener = Sending .. normal delay 200ms 09-24 09:14:31.615:I/传感器(6021):sendDelay --- 200000000 09-24 09:14:31.620: D/SensorManager(6021): JNI-sendDelay 09-24 09:14:31.620: I/SensorManager(6021): 设置正常延迟 = true 09-24 09:14:31.620: I/AndroidInput(6021): 传感器监听器拆除 09-24 09:14:32.220: W/IInputConnectionWrapper(6021): showStatusIcon on inactive InputConnection 09-24 09:14:37.010: D/Helper(6021): onActivityResult: req=RC_RESOLVE, resp=RESULT_OK 09-24 09:14:37.010: D/Helper(6021): onAR: 分辨率为 RESULT_OK,因此再次连接当前客户端。 09-24 09:14:37.065: D/LDGame MainActivity(6021): 活动结果 09-24 09:14:37.065: D/SensorManager(6021): registerListener :: 句柄 = 0 名称 = LSM330DLC 3 轴加速度计延迟 = 20000 监听器 = com.badlogic.gdx.backends.android.AndroidInput$SensorListener@41ef6c38 09-24 09:14:37.070: D/SensorManager(6021): registerListener :: 句柄 = 1 名称 = AK8975C 3 轴磁场传感器延迟 = 20000 监听器 = com.badlogic.gdx.backends.android.AndroidInput$SensorListener@ 41ef6f00 09-24 09:14:37.070: I/AndroidInput(6021): 传感器监听器设置 09-24 09:14:37.100:I/ScreenLog(6021):屏幕调整大小:SplashScreen 09-24 09:14:37.100:I/ScreenLog(6021):屏幕恢复:SplashScreen 09-24 09:14:37.160: D/dalvikvm(6021): GC_CONCURRENT 释放 674K,13% 释放 13233K/15047K,暂停 7ms+3ms,共 61ms 09-24 09:14:37.160: D/dalvikvm(6021): WAIT_FOR_CONCURRENT_GC 阻塞 22ms 09-24 09:14:37.180: D/dalvikvm(6021): GC_FOR_ALLOC 释放 10K,13% 释放 13222K/15047K,暂停 18ms,总共 18ms 09-24 09:14:37.180:I/dalvikvm-heap(6021):将堆(碎片情况)增加到 13.932MB,分配 313374 字节 09-24 09:14:37.200: D/dalvikvm(6021): GC_FOR_ALLOC 释放 CONNECTED 09-24 09:14:38.090: D/Helper(6021): 通知 LISTENER 登录成功 09-24 09:14:38.090: D/LDGame MainActivity(6021): 登录
对于登录,重点是您应该看到“D/Helper(6021): onConnectionFailed: since user started sign-in,solving problem.”因为这意味着以前可以注销
并退出 logcat
09-24 09:14:52.145:D/Helper(6021):清除 PlusClient 上的默认帐户。 09-24 09:14:52.165:D/Helper(6021):从 GamesClient 注销。 09-24 09:14:52.190:D/Helper(6021):继续断开连接。 09-24 09:14:52.190:D/Helper(6021):killConnections:杀死连接。 09-24 09:14:52.190:D/Helper(6021):断开 GamesClient。 09-24 09:14:52.195:D/Helper(6021):断开 PlusClient。 09-24 09:14:52.195:D/Helper(6021):断开 AppStateClient。 09-24 09:14:52.195:D/Helper(6021):killConnections:所有客户端断开连接。 09-24 09:14:52.195: D/Helper(6021): 状态改变 CONNECTED -> DISCONNECTED
希望有帮助!
【讨论】:
以上是关于Google Play 游戏服务 - 欢迎 <名称> 弹出窗口不一致的主要内容,如果未能解决你的问题,请参考以下文章