Есть ли способ обновить matchData в GKTurnBasedMatch без отправки push-уведомлений "Ваш ход"? - PullRequest
2 голосов
/ 18 марта 2012

Если мое понимание верно, единственный способ обновить свойство matchData середины поворота GKTurnBasedMatch - это [_currentMatch endTurnWithNextParticipant: _currentParticipant matchData: matchData завершениеHandler: nil].

Это хорошо работает, если игрок Game Center установил игру только на одном устройстве, поскольку уведомление доставляется на устройство в виде сообщения в приложение. Таким образом, уведомление может быть скрыто, пока пользователь в данный момент воспроизводит свою очередь. Однако, если у пользователя установлена ​​игра на нескольких устройствах, другие устройства получат push-уведомление «Ваш ход». Это сбивает с толку пользователя, особенно я обновляю matchData несколько раз.

Между прочим, я понимаю, что, возможно, я не использую функцию endTurnWithNextParticipant: matchData: завершенииHandler: функцию, как это было задумано (потому что я на самом деле не заканчиваю совпадение ... но просто обновляю matchData). Тем не менее, похоже, нет альтернативы для обновления состояния матча в середине хода.

Ответы [ 3 ]

2 голосов
/ 28 января 2013

Среднеоборотное сохранение было добавлено в iOS 6 с:

-[GKTurnBasedMatch saveCurrentTurnWithMatchData:completionHandler:]

Источник: Ссылка класса GKTurnBasedMatch

1 голос
/ 05 апреля 2013

Интересно, что для ответа на ваш оригинальный вопрос, похоже, что saveCurrentTurnWithMatchData still отправляет push-уведомления другим игрокам, даже если ход текущего игрока не закончился!

На мой взгляд, это похоже на недостаток дизайна GameKit - кажется, что вводить в заблуждение появление значка на значке приложения оппонента, когда еще не их очередь.Какой облом открывать и видеть, что это просто ложная тревога снова и снова!

Если кто-нибудь нашел способ подавить эти push-уведомления при вызове saveCurrentTurnWithMatchData , Я хотел бы услышать, как вы это сделали.

ОБНОВЛЕНИЕ : я создал новую тему для решения этой проблемы.

0 голосов
/ 01 апреля 2012

Не должно быть причин для обновления данных матча во время хода. Ни один из других игроков не может реагировать до своего хода, поэтому данные нужно передавать только при переходе игры от одного игрока к другому.

...