我正在尝试使用tbmp框架,但未将其用作主要活动。除了在测试期间我尝试接受邀请并转到下一轮屏幕执行第一轮(第二轮)外,其他所有内容似乎都正常运行。在onActivityResult(在第二个Activity中,我以一个Intent开头)中的行:
TurnBasedMatch match = data.getParcelableExtra(Multiplayer.EXTRA_TURN_BASED_MATCH);
解组TurnBasedMatchEntity时触发BadParcelableException:ClassNotFoundException
站点上先前提出的有关“在意图上传递TurnBasedMatch时发生BadParcelablException”的问题没有提供任何有用的线索。我已经尝试过2多种版本的代码以alpha形式发布并经过测试。我得出的结论是,问题在于我没有将tbmp框架设置为主要活动。是否有某种方法可以解决此问题,而无需我尝试将tbmp中的正常主Activity与SkeletonActivity结合起来?否则,将tbmp作为辅助活动似乎可以正常工作。它会自动登录google +,我可以“开始比赛”,“检查游戏”,“退出”并开始自动游戏。通过“开始比赛”创建的游戏可让入门者添加到当前字符串中,然后单击“完成”将产生一个可以在“检查游戏”中看到的游戏。选择对手(我的其他Gmail测试帐户)有效。另一个测试gmail帐户可以在支票游戏中看到该游戏,并且可以接受邀请。如果另一个gmail游戏进程处于活动状态并已登录,则当第一个游戏进程发送邀请时,我在第二个游戏进程上看到吐司,该通知会通知已收到邀请。但是,假设在onStartMatchClicked中使用了getSelectOpponentsIntent,则无法转到1号弯。用createMatch代替getSelectOpponentsIntent似乎导致了本质上是自动匹配。
如果我使用自动匹配功能在第一个测试帐户中开始游戏,然后在第二个测试帐户中使用自动比赛,那么在第二个帐户中,我确实获得了1号回合,但由于第一个帐户永远看不到,所以同样的问题再次出现或移动第二回合。
此站点上还有其他4个问题可以解决此问题。
“如何从Google Play服务通知中检测意图”,“如何确定从基于Google Play回合的通知中选择的匹配项”,“ TBMP骨架:为什么在物理设备上未同时调用onTurnBasedMatchReceived和onInvitationReceived”,以及(外围) TBMP骨架-如何覆盖通知事件”。我的帐户已同步,而Google Play游戏已启用通知。向意图添加其他内容并进行搜索似乎不起作用。打开和关闭registerMatchUpdateListener和registerInvitationListener不会产生有益的结果。我认为了解将tbmp框架转变为非主要活动时需要进行哪些更改会有所帮助。在我看来,这是Java代码的一个常见问题,您通常无法将代码块从一个位置移动到另一个位置,因为如果这样做,代码块会损坏。
我的替代方法是:1)在仅限Alpha的Google Play帐户中设置tbmp框架,并查看SkeletonActivity是主要活动时问题是否重复出现; 2)将SkeletonActivity移植到我的常规主要活动中; 3)放下tbmp框架并尝试使用github或programcreek中的另一个示例
最佳答案
如果您通过通知收到邀请/比赛更新,而只是没有让您的听众打电话,请确保您记得注册听众!!!我在这上面花了太长时间,只是忘了注册监听器(肯定的是我太笑了)。
Games.Invitations.registerInvitationListener(mGoogleApiClient, this);
Games.TurnBasedMultiplayer.registerMatchUpdateListener(mGoogleApiClient, this);