Есть [аналогичный вопрос от '12] 1 , но это пошаговая игра (может иметь или не иметь значение), она не была решена, и есть Возможно, с тех пор произошли изменения в Game Center / GameKit.
Простой случай - это два игрока на iOS, и оба касаются кнопки, которая выполняет этот код (currentMatch
является свойством класса GKMatch?
):
if let match = currentMatch {
print("create rematch completion handler")
match.rematch(completionHandler: {(newMatch, error) in
print("execute rematch completion handler")
if let error = error {
print(error)
}
if let newMatch = newMatch {
print("rematch completed \(newMatch.players.count)")
self.currentMatch = newMatch
}
})
}
Журнал возвращает:
create rematch completion handler
match did change state “Player2” 2
disconnected from “Player2”
execute rematch completion handler
rematch completed 0
Таким образом, GameKit самостоятельно отключает игроков, выполняет обработчик завершения и, по-видимому, создает новый матч с 0 игроками.
Какие-либо предложения о том, что нужно сделать по-другому, чтобы провести реванш с оригинальными игроками? Кто-нибудь когда-нибудь имел эту работу? Спасибо.