2014-05-19 15 views
12

Mam turowy mecz z dwoma uczestnikami, A i B. Obecnie jest to A kolei. B rezygnuje z kolei pod numerem:Prawidłowa reakcja na działanie zdalnego odtwarzacza w Game Center

[match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit ... etc. 

miarę Game Center aplikacja „s jest zaniepokojony, mecz z B jest nadal w grze - stan meczu jest GKTurnBasedMatchStatusOpen i Dopasowane wyniki to odpowiednio: GKTurnBasedMatchOutcomeNone i GKTurnBasedMatchOutcomeQuit.

Z dokumentacji wynika, że ​​uczestnik powinien to wykryć i zadzwonić:

participantA.matchOutcome = GKTurnBasedMatchOutcomeWon; 
participantB.matchOutcome = GKTurnBasedMatchOutcomeQuit; 

[self endMatchInTurnWithMatchData: ... etc. 

Jednak wydaje się, że zgłoszenie nie dla participantQuitOutOfTurnWithOutcome i okresowo iteracja każdego meczu do końca tury Odczuwalna kludge.

Jakie jest prawidłowe podejście do zakończenia tych meczów?

Odpowiedz

11

Ma ładne rozwiązanie :)

Przede wszystkim ustawić Handler

 
[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = self; 

Po co dostaniesz callbacks

 
handleInviteFromGameCenter: 
handleTurnEventForMatch:didBecomeActive: 
handleMatchEnded: 
handleTurnEventForMatch:didBecomeActive: 
handleTurnEventForMatch:didBecomeActive: 
player:receivedExchangeRequest:forMatch: 
player:receivedExchangeCancellation:forMatch: 
player:receivedExchangeReplies:forCompletedExchange:forMatch: 

Trzeba tę metodę

 
handleMatchEnded: 

To radzić sobie z końcem meczu po stronie przeciwnika.

Oto link dokumentacji https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/ImplementingaTurn-BasedMatch/ImplementingaTurn-BasedMatch.html#//apple_ref/doc/uid/TP40008304-CH15-SW12

+0

Dziękujemy! Mam 'handleMatchEnded:' zaimplementowane, ale najwyraźniej brakowało mi tego, że obejmuje to przypadek lub padło ofiarą łupieżu piaskownicy. Bonus należy do Ciebie :) – jnic

+0

Dziękuję też :) – l0gg3r

+0

Pamiętaj, że typem wydarzenia jest "push", oznacza to, że nie będzie działać na "Symulator iOS", spróbuj przetestować na prawdziwych urządzeniach. – l0gg3r

Powiązane problemy