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

时间:2011-10-28 21:57:53

标签: iphone objective-c cocoa-touch ipad gamekit

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

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

handleTurnEventForMatch

  

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

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match

参数

  

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

讨论

  

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

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

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

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

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

4 个答案:

答案 0 :(得分:14)

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

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

我认为值得仔细检查设备的通知设置,以确定您的应用已启用通知中心提醒。

答案 3 :(得分:-1)

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

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