GKTurnBasedMatch УчастникQuitOutOfTurnWithOutcome

Я работаю над пошаговой игрой Game Kit. Я делаю собственный пользовательский интерфейс для матчей, в которых участвует игрок. Я получаю матчи, используя

loadMatchesWithCompletionHandler:

Существует вариант использования, когда пользователь находится в матче, это не его ход, и он хочет выйти и больше не видеть этот матч в списке игр. Мой код вызывает

participantQuitOutOfTurnWithOutcome:withCompletionHandler: 

и удаляет строку из табличного представления.

В этот момент другой игрок получает ход и видит, что его противник сдался.

match.remoteParticipant.matchOutcome == GKTurnBasedMatchOutcomeQuit

поэтому они заканчивают игру вызовом

endMatchInTurnWithMatchData:completionHandler:

Проблема в том, что игра все еще существует в Game Center. Так зовет

loadMatchesWithCompletionHandler: 

в приложении первого игрока потянет его вниз и отобразит в таблице игр.

Единственное решение, которое я могу придумать, - это сохранить идентификатор совпадения и черный список, которые соответствуют из таблицы. Кажется немного неуклюжим.

Похоже, для этого нет API. т.е. выйти и удалить совпадение с моим списком совпадений. Есть ли лучший способ справиться с этой ситуацией только с помощью API Game Center?


person David Pettigrew    schedule 05.06.2013    source источник


Ответы (1)


Я считаю, что вам нужно установить свойство matchOutcome для каждого участника на что-то отличное от GKTurnBasedMatchOutcomeNone, прежде чем вы сможете удалить совпадение. Из документов:

Вызов этого метода завершает матч для всех игроков. Этот метод может быть вызван только >текущим участником. Прежде чем ваша игра вызовет этот метод, свойство matchOutcome для каждого объекта >participant, хранящегося в свойстве участников, должно быть установлено на значение, отличное от >GKTurnBasedMatchOutcomeNone.

person kristiankeane    schedule 23.07.2013