Ios GKTurnBasedMatch接收数据

Ios GKTurnBasedMatch接收数据,ios,objective-c,game-center,gkturnbasedmatch,Ios,Objective C,Game Center,Gkturnbasedmatch,我正在尝试实现一个基于回合的应用程序,发送回合数据没有问题,但我看不到自动接收数据的方法。到目前为止,我发现了很多: 有一个gkturnbasedeventhandlerregate-协议。这很容易实现,但是我应该在哪里将该对象设置为它必须是的任何对象的委托?它似乎不是GKTurnBasedMatch,或GKTurnBasedMatchmakerViewController,或GKMatchMaker的委托 还有一种方法叫GKTurnBasedMatch,叫做loadMatchDataWith

我正在尝试实现一个基于回合的应用程序,发送回合数据没有问题,但我看不到自动接收数据的方法。到目前为止,我发现了很多:

  • 有一个
    gkturnbasedeventhandlerregate
    -协议。这很容易实现,但是我应该在哪里将该对象设置为它必须是的任何对象的委托?它似乎不是
    GKTurnBasedMatch
    ,或
    GKTurnBasedMatchmakerViewController
    ,或
    GKMatchMaker
    的委托

  • 还有一种方法叫
    GKTurnBasedMatch
    ,叫做
    loadMatchDataWithCompletionhandler
    ,但是,据我所知,只有当你感觉匹配需要更新时才会调用一次。我怎么知道它必须更新?我是否必须每隔一秒钟左右启动此功能

提前谢谢


更新:我已将
[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate
设置为实现
GKTurnBasedEventHandler委托的静态实例。它仍然不会被调用。

您使用下面的语句设置它,它将成为共享实例的委托:

[[GKTurnBasedEventHandler sharedTurnBasedEventHandler] setDelegate:self];
实际上,您不需要手动调用
loadMatchDataWithCompletionhandler
,当其中一个参与者调用
endTurnWithMatchData
时,将通过
GKTurnBasedEventHandler
委托方法通知所有其他参与者:

-(void) handleTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive

这就是您需要更新UI的地方。请注意,模拟器不支持
GKTurnBasedEventHandler
委托方法,它们只在实际设备中被调用。

实际上,我目前正在模拟器上运行此方法。可惜它在那里不起作用。