问题 如何获得GameKit回合制比赛的通知?


我正在使用新的回合制iOS5 API开发基于回合制的iOS游戏。

您需要为此实现的委托协议之一是GKTurnBasedEventHandlerDelegate。实现的方法之一是handleTurnEventForMatch。这是来自这个方法的Apple文档:

handleTurnEventForMatch

当本地玩家轮到你时,发送给代表   回合制比赛。

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match

参数

match - 包含匹配当前状态的匹配对象。

讨论

当您的代表收到此消息时,播放器已接受a   推送正在进行的比赛的通知。你的游戏应该   结束它正在执行的任务并切换到匹配   匹配对象提供的信息。

我的大部分游戏都在运作。我收到通过上述方法收到的动作的通知。 我也看到应用程序图标上的徽章正在成功更新。

但是,当转弯事件进来时,我没有收到任何其他系统通知;通知中心没有显示任何内容等。我是否需要在GameKit之外做一些事情才能启用此功能?当我获得handleTurnEventForMatch时,是否需要手动发送本地通知?文档似乎并不意味着没有,因为它上面说“当你的代表收到这条消息时,玩家已经接受了正在进行的比赛的推送通知。”

所以这似乎意味着玩家点击推送通知来调用此方法(但当然它们永远不会出现,所以我没有!)

如何在我的应用中启用基于回合制事件的推送通知,我需要做什么?当我收到上述方法时,我是否需要实际发送本地通知(考虑到上述文档的措辞,这似乎与意图相矛盾)。


6537
2017-10-28 21:57


起源

嘿约翰,你知道了吗?我打算自己在游戏中实现所有这些东西。希望它不是太可怕! - livingtech
Plz检查我的问题 stackoverflow.com/questions/16266089/...,我不明白为什么我没有在otehr设备中收到通知。可能是与handleInviteFromGameCenter或GKTurnBasedEventHandlerDelegate相关的issu? - Aitul


答案:


我刚刚完成了这个战斗,经过一个星期左右的敲击桌子后,我发现了一些重要的事情:

(1)模拟器不接收这些转弯通知。一旦我完成这项工作,它在两个设备之间工作正常。与设备进行比赛的模拟器将发送事件,但不会接收它们。因此,如果您尝试使用一台设备和模拟器进行测试,祝您好运。使用两个设备。

(2)确保在iTunes连接中启用了“为此版本启用了游戏中心”,并确保应用中的CFBundleVersion与此版本匹配。一旦我这样做,一切都开始工作了。

我假设你已经做了: [GKTurnBasedEventHandler sharedTurnBasedEventHandler] .delegate = YOUR_DELEGATE_CLASS;


14
2017-11-30 22:30



救了我的时间基调。谢谢 - Peacemoon


汤姆舒尔茨说的是真的。但有一点! :您可以使用您的设备获取通知,但不能使用模拟器。为此,请始终在构建和运行之前重置模拟器内容和设置。在模拟器上,您可以使用加载匹配方法来接收测试内容。希望能帮助到你


1
2018-01-06 00:18





正如文档所述,当玩家接受推送通知时(通常通过解锁手机或通过通知中心)收到该消息。发送推送通知在Game Center客户端决定,并由GameKit自动为您完成。您不需要实现GKTurnBasedEventHandlerDelegate以使它们工作,只需响应接受它们的玩家(通过自动返回到该匹配或其他)。

我想在您的设备的通知设置中进行双重检查是值得的,以确保您的应用启用了通知中心提醒。


0
2018-03-31 23:54





您是否在iTunes connect /配置门户中设置了推送通知?您实际上需要一个特殊证书来启用推送。

在我设置证书之前,我遇到了和你一样的问题。


-1
2017-11-18 22:44