Почему match.rematch возвращает 0 игроков в одноранговой игре Game Center? - PullRequest
0 голосов
/ 14 января 2019

Есть [аналогичный вопрос от '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 игроками.

Какие-либо предложения о том, что нужно сделать по-другому, чтобы провести реванш с оригинальными игроками? Кто-нибудь когда-нибудь имел эту работу? Спасибо.

...