Автоматическое сопоставление GameCenter GKMatchmakerViewController не работает, ожидаемый PlayerCount всегда 1, решения?

Я не могу установить соединение между двумя игроками, используя автоматч и GKMatchmakerViewController.

Поведение такое:

  1. didFindMatch называется

  2. ожидаемыйPlayerCount не равен нулю (всегда 1)

  3. didChangeState никогда не вызывается

  4. после продолжительного периода времени получено сообщение об отключении игрока.

У кого-нибудь есть решение этой проблемы?

Спасибо!


person Horatiu Paraschiv    schedule 12.07.2012    source источник


Ответы (1)


Чтобы подключить правильное количество игроков, убедитесь, что вы правильно настроили GKMatchRequest.

В этом примере у меня есть игра, которая работает только при подключении двух игроков, поэтому я установил минимальное и максимальное количество игроков равным 2:

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;

GKMatchmakerViewController* mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;

Затем все, что вы отметили, работает так, как ожидалось.


ИЗМЕНИТЬ:

Прочитав свой вопрос еще раз, также убедитесь, что вы сохранили объект GKMatch, предоставленный вам:

-(void) matchmakerViewController:(GKMatchmakerViewController*)viewController didFindMatch:(GKMatch*)match;

И, конечно же, вы должны установить делегат этого объекта соответствия:

//Done!
-(void) matchmakerViewController:(GKMatchmakerViewController*)viewController didFindMatch:(GKMatch*)match{
    [self dismissModalViewController];
    [self setCurrentMatch:match];

    match.delegate  = self;

    if (!matchStarted && match.expectedPlayerCount == 0){
        matchStarted = YES;
        [delegate onMatchStart];
        self.handlerVoice = [OnlineHandlerVoice handlerWithMatch:currentMatch];
    }
}
person Mazyod    schedule 12.07.2012
comment
Спасибо, что нашли время ответить на мой вопрос. Однако все сделано, как вы уже сказали, и я получаю такое поведение. Другие идеи? - person Horatiu Paraschiv; 12.07.2012
comment
Если вы сделали все вышеперечисленное и уверены на 100%, сделайте как обычно: 1- удалите приложение, 2- выйдите из игрового центра, 3- очистите папку сборки, 4- перезагрузите устройство, 5- создайте новый учетная запись песочницы, используя AlertView внутри приложения, 6- скрестите пальцы. ПРИМЕЧАНИЕ. Никогда не тестируйте его на симуляторе iOS. - person Mazyod; 12.07.2012
comment
Итак, если у меня есть только одно устройство, я не могу проверить его между симулятором и устройством? Если это так, то это действительно отстой. - person Horatiu Paraschiv; 12.07.2012
comment
Ага, отстой такой ужасный.. Мне кажется, я даже читал в документации, что Симулятор не будет работать должным образом при подборе игроков. Тем не менее, я считаю, что мне повезло, и это сработало несколько раз. - person Mazyod; 12.07.2012
comment
Я думал о том, чтобы пойти в старбакс и изменить сеть, может быть, это могло бы помочь. Но если это не так, я застрял, так как у меня нет 2 устройств. Разве в симуляторе не должно работать, по крайней мере, автоматическое сопоставление? Я знал, что нужно работать... В любом случае, спасибо за ваше время и вашу помощь. - person Horatiu Paraschiv; 12.07.2012
comment
Мне удалось успешно использовать автоматизацию между устройством и симулятором. Однако приглашения не работают, по-видимому, потому, что нет возможности отправить push-уведомление симулятору. - person Kris Giesing; 27.07.2012