GKTurnBasedMatch receive data
Asked Answered
C

1

3

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.

Contemplation answered 11/4, 2013 at 19:48 Comment(0)
Y
3

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.

Yugoslavia answered 11/4, 2013 at 21:21 Comment(1)
Actually, I am currently running this on a simulator. It's a pity it doesn't work there.Contemplation

© 2022 - 2024 — McMap. All rights reserved.