沙盒游戏中心回合事件通知不一致
Posted
技术标签:
【中文标题】沙盒游戏中心回合事件通知不一致【英文标题】:Sandbox Game Center Turn Event Notifications Not Consistent 【发布时间】:2013-10-21 13:20:52 【问题描述】:我正在使用 Game Center 的回合制游戏功能制作回合制游戏。我正在使用模拟器和我的 iPhone 来测试转弯事件的通知。结果非常不一致。大约 75% 的时间,当我在模拟器上移动并通过转弯时,我的 iPhone 上没有收到任何通知。似乎没有调用此函数:
handleTurnEventForMatch:didBecomeActive:
我在验证本地用户的代码中设置了 GKEventHandlerDelegate,它似乎设置正确。我偶尔收到通知的事实表明这不是问题所在。
有谁知道这可能是什么问题?这可能是沙盒游戏中心服务器的问题吗?它们是否会限制您可以在短时间内发送的通知数量或类似情况?
编辑:我刚刚发现一些人的帖子遇到了同样的问题,但没有解决方案。虽然没有最近的帖子。任何更新?
Edit2:我还发现,在移动之后,当我在另一台设备上打开 GKTurnBasedMatchmakerViewController 时,它仍然说轮到其他玩家了。当我关闭并重新打开它时,信息是正确的。此外,当我打开游戏 GKTurnBasedMatchmakerViewController 时它仍然显示不正确的信息时,它确实为我提供了带有更新信息的正确匹配对象。这有什么关系吗?
【问题讨论】:
我得到了完全相同的东西。这是非常令人沮丧的。我希望游戏中心的现场版像沙盒一样糟糕。另外...我正在使用较新的 ios 7 [[GKLocalPlayer localPlayer] registerListener:]; 我希望你的意思是“没有那么糟糕”:p 我也刚切换到 [[GKLocalPlayer localPlayer] registerListener]。如果要支持iOS 6,我们还需要添加旧的吗? 不。目前尚不清楚是什么原因造成的,但似乎一致认为这是沙盒服务器的问题,不应该在生产中发生。但似乎没有人确定。 我也遇到了这个问题,代码已经完美运行了 6 个月以上。我认为这是一个沙盒问题。值得注意的是,如果我进入 Game Center 应用程序并查看我的回合(底部标签栏上的最后一项),它将正确刷新我的比赛并显示所采取的回合。然后,如果我进入我的游戏并重新加载比赛,则信息是正确的。显然这是苹果方面的一个问题,但使用这个技巧我已经能够(某种程度上)继续测试我的代码。注意:我使用自定义 UI 来显示和创建匹配项,而不是默认视图控制器。 【参考方案1】:我想我会与您分享我的解决方案,希望与您遇到的问题相同。从我对您问题的评论中可以看出,我遇到了和您一样的问题。事实证明,我在 iTunes Connect 中的设置是罪魁祸首,我不知道。您应该检查的是,您仍然在 iTunes Connect 需要的两个地方都启用了 Game Center。首先,进入 iTunes Connect 中的“管理我的应用程序”后,选择您的应用程序并在右侧菜单中,然后单击“管理游戏中心”。确保当前已启用。我什至建议禁用它,然后再重新启用它。
此外(这是我所缺少的),您必须在另一个地方启用它。首次选择应用程序时返回上一个屏幕。右上角是您可以选择管理游戏中心的地方,但我们正在查看“版本”部分的底部。单击应用程序的查看详细信息按钮,并确保在底部附近启用了游戏中心按钮。同样,我也会在此处禁用并重新启用它。给它大约 10 分钟,从 Game Center 应用程序中清除所有开放回合和比赛(这可能是一个可选步骤),然后再次构建并运行。希望您能再次正确收到转弯通知。
【讨论】:
谢谢,对我来说我还没有打开应用详情页下的GameCenter。您还知道 - (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive 和 - (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive 之间的区别。在 raywenderlich 的教程中,第二个使用没有“didBecomeActive:(BOOL)didBecomeActive”。 我正在使用设备和模拟器进行测试,转转需要多长时间? MTahir:没有 didBecomeActive 的方法在 iOS6 和之前的版本中使用过,并且已被弃用。如果您不确定某些方法,请参考 Apple 开发人员库中的 GKTurnBasedEventHandlerDelegate 协议信息。至于模拟器,使用时不会收到转弯通知,只有在实际设备上运行时才会收到。由于不可靠的 Game Center 沙盒服务器,即使这样有时也很挑剔。 当我结束打开模拟器,并且设备上的应用程序处于后台时,会立即收到通知,但是当点击通知打开应用程序时,游戏状态仍然是旧的,我是否必须现在手动检查更新的匹配状态?【参考方案2】:我遇到了同样的问题。但是,当我在多台设备上对其进行测试时,它工作正常......可能是模拟器有问题
【讨论】:
在设备上我遇到了同样的问题。你确定你不只是获得了幸运的连续转弯吗?有时它可以连续运行 3 圈什么的,然后又失败了。 让我试一下...但是在我的模拟器上这个问题经常发生...而且我已经测试了超过 3 圈:)。同样在 raywendelich 的教程中,我发现通知不一致...这里是您要检查的链接raywenderlich.com/32960/…以上是关于沙盒游戏中心回合事件通知不一致的主要内容,如果未能解决你的问题,请参考以下文章