Есть ли способ вызвать saveCurrentTurnWithMatchData без отправки push-уведомления?

У меня есть игра Game Center, которая позволяет игрокам делать несколько ходов за ход. В iOS 6 Apple реализовала замечательную функцию в saveCurrentTurnWithMatchData, которая позволяет вам делать это - она ​​сохраняет данные в игровой центр, чтобы предотвратить мошенничество, например, многократно повторяя ход, без перехода к следующему игроку.

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

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

1 ответ

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

Вместо того, чтобы использовать saveCurrentTurnWithMatchData:, Я использую endTurnWithNextParticipants: но я указываю текущего игрока, а не следующего. Это, кажется, делает трюк:

NSTimeInterval interval = 86400; // seconds in a day
[currentMatch 
  endTurnWithNextParticipants:[[NSArray alloc] initWithObjects:currentMatch.currentParticipant,nil] 
  turnTimeout:interval matchData:[self packMatchData]
  completionHandler:^(NSError *error) {
    if (error) {
       // handle error
    }
  }
];
Другие вопросы по тегам