Есть ли способ обновить matchData в GKTurnBasedMatch без отправки push-уведомлений "Ваш ход"?
Если мое понимание верно, единственный способ обновить свойство matchData середины поворота GKTurnBasedMatch - это [_currentMatch endTurnWithNextParticipant:_currentParticipant matchData:matchData завершение Handler:nil].
Это хорошо работает, если игрок Game Center устанавливает игру только на одном устройстве, поскольку уведомление доставляется на устройство в виде сообщения в приложение. Таким образом, уведомление может быть скрыто, пока пользователь в данный момент играет свою очередь. Однако, если у пользователя установлена игра на нескольких устройствах, другие устройства получат push-уведомление "Ваш ход". Это сбивает с толку пользователя, особенно я обновляю matchData несколько раз.
Кстати, я понимаю, что, возможно, я не использую функцию endTurnWithNextParticipant: matchData: завершении Handler: функцию, как это было задумано (потому что я на самом деле не заканчиваю совпадение... но просто обновляю matchData). Тем не менее, похоже, нет альтернативы для обновления состояния матча в середине хода.
3 ответа
Среднеоборотное сохранение было добавлено в iOS 6 с:
-[GKTurnBasedMatch saveCurrentTurnWithMatchData:completionHandler:]
Источник: GKTurnBasedMatch Ссылка на класс
Интересно, что для ответа на ваш первоначальный вопрос, похоже, что saveCurrentTurnWithMatchData все еще отправляет push-уведомления другим игрокам, даже если ход текущего игрока еще не закончился!
На мой взгляд, это похоже на недостаток дизайна GameKit - кажется, что вводить в заблуждение значок на значке приложения противника, когда еще не их ход. Какой облом, чтобы открыть его и увидеть, что это просто ложная тревога снова и снова!
Если кто-нибудь нашел способ подавления этих push-уведомлений при вызове saveCurrentTurnWithMatchData, я хотел бы услышать, как вы это сделали.
ОБНОВЛЕНИЕ: я начал новую тему для решения этой проблемы.
На самом деле не должно быть причин для обновления данных матча во время хода. Ни один из других игроков не может отреагировать до своего хода, поэтому данные необходимо передавать только при переходе игры от одного игрока к другому.