沙盒游戏中心的事件通知不一致

4

我正在制作一个回合制游戏,使用Game Center的回合制游戏功能。我正在使用模拟器和我的iPhone来测试回合事件的通知。结果非常不一致。大约75%的时间,当我在模拟器上进行移动并传递回合时,我的iPhone上没有收到任何通知。似乎这个函数没有被调用:

handleTurnEventForMatch:didBecomeActive:

我在验证本地用户的代码中设置了GKEventHandlerDelegate,它似乎已经设置正确。我偶尔会收到通知,这表明问题不在这里。
有人知道这里可能出了什么问题吗?这可能是沙盒Game Center服务器的问题吗?他们限制了短时间内可以发送的通知数量吗?
编辑:我刚刚发现一些人遇到了相同的问题,但没有解决方案。没有非常最近的帖子。有更新吗?
编辑2:我还发现,在移动后,当我在另一个设备上打开GKTurnBasedMatchmakerViewController时,它仍然显示轮到其他玩家。当我关闭并重新打开它时,信息才是正确的。此外,当我在仍然显示不正确信息的情况下打开游戏GKTurnBasedMatchmakerViewController时,它确实给了我正确的匹配对象和更新的信息。这可能与此有关吗?

我遇到了完全相同的问题,这真的很令人沮丧。我希望游戏中心的实际版本和沙盒一样糟糕。另外,我正在使用更新的iOS 7 [[GKLocalPlayer localPlayer] registerListener:]; - AutomatonTec
1
我希望你的意思是“不那么糟糕” :p - Bart
我刚刚也转换为使用[[GKLocalPlayer localPlayer] registerListener]。如果我们想要支持iOS 6,我们仍然需要添加旧的监听器,对吗? - Bart
1
不,目前还不清楚是什么导致了这个问题,但众所周知的是这可能是沙盒服务器的问题,在生产环境中不应该发生。但没有人能确定。 - Bart
2
我也遇到了这个问题,而且这段代码已经无误地运行了6个月。我认为这是沙盒问题。需要注意的是,如果我进入游戏中心应用程序并查看我的回合(底部选项卡栏上的最后一项),它将正确刷新我的比赛并显示所采取的回合。然后,如果我进入我的游戏并重新加载比赛,信息就是正确的。显然,这是苹果方面的问题,但使用这个技巧,我已经能够(在某种程度上)继续测试我的代码。注意:我使用自定义UI来显示和创建比赛,而不是默认的视图控制器。 - Corbin87
显示剩余4条评论
2个回答

1
我想和你分享我的解决方案,希望它能解决你遇到的同样问题。正如你看到我对你的问题发表的评论,我也遇到了同样的问题。事实证明,iTunes Connect中的设置是罪魁祸首,而我却不知道。你需要检查的是在iTunes Connect所需的两个位置中是否仍然启用了游戏中心。首先,在进入iTunes Connect的“管理我的应用”后,选择您的应用程序,在右侧菜单中点击“管理游戏中心”。确保当前已启用。我甚至建议禁用它,然后再次启用以确保安全。
此外(这就是我缺少的),您必须在另一个位置启用它。回到您首先选择应用程序的上一个屏幕。右上角是您可以选择Manage Game Center的地方,但我们正在底部查看“Versions”部分。单击您的应用程序的查看详细信息按钮,并确保位于底部附近的Game Center按钮已启用。同样,我也会在这里禁用和重新启用它。给它约10分钟,清除所有在Game Center应用程序中打开的回合和比赛(这可能是可选步骤),然后再次进行构建和运行。希望您可以正常接收回合通知。

谢谢,对我来说,我还没有在应用程序详细信息页面下打开GameCenter。另外,您知道“-(void)handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive”和“-(void)handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive”之间的区别吗?在raywenderlich的教程中,第二个没有使用“didBecomeActive:(BOOL)didBecomeActive”。 - MTahir
我正在使用设备和模拟器进行测试,转移轮到需要多长时间? - MTahir
MTahir:iOS6及之前版本使用了无didBecomeActive方法的方法,但现在已被弃用。如果您对某些方法不确定,请参考苹果开发者库中的GKTurnBasedEventHandlerDelegate协议信息。至于模拟器,在使用模拟器时不会收到通知,只有在实际设备上运行时才能收到。即使如此,由于Game Center沙箱服务器不稳定,有时也可能出现问题。 - Corbin87
当我在模拟器上结束回合时,如果设备上的应用程序在后台运行,则会立即收到通知,但是当点击通知以打开应用程序时,游戏状态仍然是旧的。现在我是否需要手动检查更新的比赛状态? - MTahir

0

我遇到了同样的问题。但是当我在多个设备上测试时,它正常工作...可能是模拟器出了一些问题。


在设备上我遇到了同样的问题。你确定你不是刚好连续走了几步吗?有时它可以连续工作3次左右,然后又会失败。 - Bart
让我试试...但在我的模拟器上,这个问题经常出现...而且我已经测试了三次以上 :)。此外,在raywendelich的教程中,我发现通知不一致...这是链接,如果您想要检查:http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 - Umesh Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接