Есть ли способ вызвать 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
}
}
];