我一直致力于开发回合制多人游戏。一切都工作了很长一段时间,直到突然间我再也无法打开“匹配收件箱”的意图(例如,
Intent intent = getGamesClient().getMatchInboxIntent();
startActivityForResult(intent, MainActivity.RC_LOOK_AT_MATCHES);
当我查看错误的堆栈跟踪时,这是因为与无效状态匹配。 更糟糕的是,即使我尝试加载匹配只是以编程方式删除/解除它们,我也会收到错误:
02-05 07:43:36.684: E/AndroidRuntime(13814): FATAL EXCEPTION: main 02-05 07:43:36.684: E/AndroidRuntime(13814): Process: com.oakonell.ticstacktoe, PID: 13814 02-05 07:43:36.684: E/AndroidRuntime(13814): java.lang.IllegalStateException: Not a valid turn status: 4 02-05 07:43:36.684: E/AndroidRuntime(13814): at android.os.Parcel.readException(Parcel.java:1473) 02-05 07:43:36.684: E/AndroidRuntime(13814): at android.os.Parcel.readException(Parcel.java:1419) 02-05 07:43:36.684: E/AndroidRuntime(13814): at com.google.android.gms.internal.fc$a$a.a(Unknown Source) 02-05 07:43:36.684: E/AndroidRuntime(13814): at com.google.android.gms.internal.ex.a(Unknown Source) 02-05 07:43:36.684: E/AndroidRuntime(13814): at com.google.android.gms.games.GamesClient.loadTurnBasedMatches(Unknown Source)
(看起来MATCH_TURN_STATUS_ *的常量从0-3开始运行,因此4无效。)
除了API在某种程度上允许我在无知状态下将匹配保存在无效状态之外,似乎一旦存在无效状态,它就无法被引用,即使要清除它也是如此起来。
我看到开发者控制台引用了一个API来重置(列入白名单的)用户的匹配。
https://cloud.google.com/console/project/[app id]/apiui/api/gamesManagement/method/gamesManagement.turnBasedMatches.reset
但我无法从控制台本身开始工作(我也不确定如何指定用户)。有没有办法从Android应用程序代码访问它?否则,我如何从控制台访问以重置受此无效匹配影响的(测试者)玩家的匹配?
答案 0 :(得分:0)
我能够从我的用户“断开”应用程序,删除所有Google数据。 转到设备设置|帐户|谷歌。 点击Google+,在帐户设置下选择匹配已损坏的用户,点击带有Google+登录的应用,选择包含损坏匹配的应用,最后点击断开连接。
当对话框出现确认时,请选中“同时删除Google上的所有(应用)活动”,然后点击“断开连接”进行确认。
这似乎没有立即解决问题,我还清除了设备的“Google Play服务”缓存。转到设备设置|应用程序管理器,找到“Google Play服务”并单击它。对于这个应用程序,清除数据/缓存,管理数据,任何你可以删除所有本地缓存数据(我认为这不会伤害使用谷歌播放服务的任何其他应用程序,因为你应该能够,例如,安装应用程序一个新的设备,并让它同步到你的云保存状态。好吧,也许这可以删除尚未发送到云的未决更改...谨慎使用。)可能没有要求执行此顺序为了我的用户的“匹配意图”再次工作,但正如我所说,它似乎并没有立即工作后应用程序断开连接,并重新进入。它需要时间让断开连接传播到云端(?)或我还必须清除设备的缓存......
现在希望我没有人以某种方式保存任何无效状态的匹配。 这个解决方案肯定会超过我认为是我的另一个选择的两周,等待比赛在两个用户没有活动后到期。
(我认为解决这个问题的第三个选择是在google服务器上运行了一些“清理”工作,以定期删除/更正任何无效匹配,或者响应此stackoverflow问题或电子邮件/崩溃我的设备的“Google Play服务停止响应”时发送的报告。)