Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GKTurnBasedMatch receive data

I am trying to implement a turn-based app, and there is no problem with sending turn data, but I see no way of receiving data automatically. So far, I have found out that much:

  • There is a GKTurnBasedEventHandlerDelegate-protocol. It is easy to implement, but where do I set that object to be a delegate of whatever it has to be a delegate of? It does not seem to be a delegate of GKTurnBasedMatch, or GKTurnBasedMatchmakerViewController, or GKMatchMaker.

  • There is also a method of GKTurnBasedMatch which is called loadMatchDataWithCompletionhandler, but, as far as I understand, it is only called once when you kinda have a gut feeling that the match needs to be updated. How am I to know that it has to be updated? Do I have to fire this function every second or so?

Thanks in advance.

UPDATE: I have set [GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate to be a static instance that implements GKTurnBasedEventHandlerDelegate. It still never gets called.

like image 667
arik Avatar asked Jan 31 '26 04:01

arik


1 Answers

You set it with below statement, it becomes the delegate of a shared instance:

[[GKTurnBasedEventHandler sharedTurnBasedEventHandler] setDelegate:self];

You do not need to call loadMatchDataWithCompletionhandler manually actually, when one of the participants call endTurnWithMatchData all other participants will be notified through GKTurnBasedEventHandler delegate method:

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

That's where you need to update UI. Beware that simulator does not support GKTurnBasedEventHandler delegate methods, they only get called in actual devices.

like image 52
guenis Avatar answered Feb 01 '26 18:02

guenis



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!