GKTurnBasedMatch推送通知不太一致。

7
我正在测试两个设备之间的回合制游戏。据我所知,例如使用[GKTurnBasedMatch endTurnWithNextParticipants:]发送一个回合应该会自动向对手推送一条Game Center通知。有时候,这正如预期的那样工作:回合被发送并且立即在对手的设备上显示横幅通知。一切都很好。
令我困惑的是,其他时候,尽管回合本身已经被正确发送(我可以知道,因为当对手刷新比赛时,比赛是最新的),但却没有推送通知进来
我的理解是否存在漏洞?如果我理解正确,不一致的通知与我的代码无关,因为问题不在于我处理通知的方式,而在于根本没有通知。换句话说,[handleTurnEventForMatch:](一个GKTurnBasedEventHandlerDelegate方法)与此无关(我认为),因为如果没有接收到通知,它永远也不会被调用。
所以,我想知道是否有人有过类似的经验。这是否可能是由于我的代码中的某些原因导致的?或者,可能是Game Center沙盒造成的不一致性,我对此无能为力?
非常感谢您提出任何想法或建议。
3个回答

4
这是关于GameCenter沙盒模式的问题。为了让您的设备进入沙盒模式,您需要打开/运行您的应用程序并进行游戏中心身份验证。如果您在打开您的游戏后打开另一个(已发布的)游戏,则会离开沙盒模式并返回常规游戏中心模式。
即使您的游戏在后台运行,只要它是最后一个启用游戏中心的游戏,您就应该像平常一样收到推送通知。但是,如果您打开游戏,然后终止进程,您将不再处于沙盒模式,并且将无法接收推送通知。

我之前考虑过这个问题,它确实解释了一些我原本认为是奇怪行为的情况。然而,尽管我完全退出了常规游戏中心并且没有使用其他游戏,我仍然注意到许多不一致性。实际上,有很多时候即使应用程序在积极运行,也没有收到任何通知。我已经在我的两个设备之间交换了很多回合,但仍然无法看到任何道理 - 有时候两个设备都会配合,有时候只有一个,有时候两个都不行。还有什么其他想法吗?谢谢! - cowfaboo
1
您不需要退出游戏中心。实际上,如果您退出登录,则将无法接收到推送通知。 - Brandon Lassiter
1
游戏中心的邀请在这些日子里无法正常工作,我不知道游戏中心沙盒服务器出了什么问题。我希望你的问题是由于这个原因造成的。这两周我在游戏中心遇到了很大的问题,让我感到很烦恼。 - Aitul
我也遇到了这个问题。在回合之间,我没有运行任何其他应用程序,通常我会在两个设备上保持应用程序运行状态。无论是在调试模式下连接到Xcode还是不连接。iOS 6或iOS 7都是如此。似乎在杀死并重新启动应用程序后的第一轮会收到推送通知。此时,我正在认真考虑将应用程序按原样发布并在生产环境中进行测试。 - webjprgm
此外,应用程序图标没有显示(1)徽章,通知中心也没有任何内容,而游戏中心匹配开始对话框显示“他们的回合”,但在选择游戏并加载数据后轮到我了。 - webjprgm
显示剩余2条评论

2

对于那些遇到类似问题的人:这实际上是一个Game Center沙盒问题,与我的代码无关,在App Store发布时一切都很好。因此,请阅读这里的评论并确保没有其他因素影响您所遇到的任何问题...但请注意,可能您只是遇到了一些超出您控制范围的Game Center沙盒问题!


这是你7个月前提出的问题。你从那时起一直在经历这个问题吗?还是最近又开始遇到了?因为我突然在3天前开始遇到这个问题,而之前一切都运行得很完美。 - Mehmet Alpsoy
现在仍然发生。有没有关于它从未在生产游戏中心发生的参考资料? - Aviad Ben Dov
这对我仍然存在。https://dev59.com/lpLea4cB1Zd3GeqP4Z3V。从技术上讲,现在已经没有“沙盒”了,所以我不知道这是否是沙盒问题。 - STANGMMX

0

我也遇到了同样的问题。我的游戏停止接收 Game Center 的回合事件和通知,我已经完成了我的游戏并进行测试,但是这个星期,问题开始出现了。它之前一直运行得很好,但突然有些实例在几天内就无法接收回合事件。

我正在使用 iOS7 SDK 并针对 iOS7 进行开发(回合事件处理与之前的 iOS 版本不同,所以我需要在即将推出的游戏功能中进行交换,这就是为什么我正在使用 iOS7)。

然后我制作了一个测试应用程序来检查它是否与 iOS6 和之前的 SDK 相同,但没有帮助,情况依然如故。因此,请不要浪费时间将您的代码升级到 iOS7 希望它能正常工作,问题还是存在的。我也尝试了许多方法,如重置设备和设置,使用新用户等。

我还尝试了 Ray Wenderlich 的基于 iOS 5 的回合制游戏教程,通过下载源代码进行测试,但它也不能正常工作。

事情是这样的,通常当我启动游戏时,游戏会接收到回合事件,但几个回合后,它就停止了,一旦停止接收,就永远停止了。如果我重新加载比赛,我可以得到更新的比赛和数据也会更新,所以我可以进行回合。这意味着比赛在Game Center上已经更新。因此,要么Game Center没有将数据推送给用户(可能是因为用户在游戏处于后台时无法从Game Center接收通知),要么GameKit没有将事件发送到处理程序。
我不知道为什么会发生这种情况,或者为什么开始发生,但我不能像这样发布我的游戏,希望它能在沙盒外正常工作。我将尝试更多的事情(例如尝试iOS7的回合提醒,看看它们是否将其推送给用户),然后我将向苹果的支持团队询问。我计划做的另一件事是将我的测试应用程序放到App Store中,看看它是否在沙盒外正常工作。
希望这是一个沙盒问题。

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