Правильный ответ удаленному игроку в Game Center
У меня есть пошаговый матч с двумя участниками, A и B. В настоящий момент это поворот. B выходит из очереди, вызывая:
[match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit ... etc.
Что касается приложения Game Center, то совпадение с B все еще находится в игре - состояние соответствия - GKTurnBasedMatchStatusOpen
, а результаты соответствия - GKTurnBasedMatchOutcomeNone
и GKTurnBasedMatchOutcomeQuit
соответственно.
Из документации видно, что участник A должен обнаружить это и вызвать:
participantA.matchOutcome = GKTurnBasedMatchOutcomeWon;
participantB.matchOutcome = GKTurnBasedMatchOutcomeQuit;
[self endMatchInTurnWithMatchData: ... etc.
Однако для participantQuitOutOfTurnWithOutcome
, как представляется, нет уведомлений, и периодическое повторение каждого конца каждого конца до конца выглядит как kludge.
Каков правильный подход к окончанию этих совпадений?
Ответы
Ответ 1
У него хорошее решение:)
Прежде всего вы установите обработчик
[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = self;
После этого вы получите обратные вызовы
handleInviteFromGameCenter:
handleTurnEventForMatch:didBecomeActive:
handleMatchEnded:
handleTurnEventForMatch:didBecomeActive:
handleTurnEventForMatch:didBecomeActive:
player:receivedExchangeRequest:forMatch:
player:receivedExchangeCancellation:forMatch:
player:receivedExchangeReplies:forCompletedExchange:forMatch:
Вам нужен этот метод
handleMatchEnded:
Чтобы обработать конец матча на стороне противника.
Вот ссылка на документацию
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/ImplementingaTurn-BasedMatch/ImplementingaTurn-BasedMatch.html#//apple_ref/doc/uid/TP40008304-CH15-SW12