Иногда, когда начинается матч между двумя игроками, возможно, что у одного игрока еще нет подключенного состояния. Перед тем, как начать игру, вам следует проверить, подключено ли больше игроков. Если значение больше 0, вместо запуска игры подождите, пока игрок подключится, и запускайте игру только тогда, когда этот игрок подключен.
Таким образом, код будет выглядеть примерно так внутри вашего метода, в котором вы настраиваете игру:
if (currentMatch.expectedPlayerCount) {
waiting = YES;
}
И вы бы реализовали этот метод делегата:
- (void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state
{
if (state == GKPlayerStateConnected) {
if (waiting) {
waiting = NO;
// start the game now
}
} else if (state == GKPlayerStateDisconnected) {
// handle disconnect
}
}