GameCenter: endTurnWithNextУчастники не продвигаются

В среде с песочницей у меня возникают проблемы с переносом матча на основе поворота к следующему игроку.

Первоначальные условия:

Игрок A и игрок B на устройстве A и устройстве B, соответственно.Оба вошли в песочницуОба игрока могут видеть сообщение о статусе GC друг другаИгрок A создает матч и приглашает игрока BИгрок А заканчивает ход

В своей функции «конец поворота» я делаю следующее:

    NSLog(@"size = %ld", updatedMatchData.length);

    //move the current player to the bottom of the list
    NSMutableArray *nextPlayers = (NSMutableArray *)theMatch.participants;
    NSLog(@"%@", [nextPlayers description]);

    GKTurnBasedParticipant *firstGuy = nextPlayers[0];
    [nextPlayers removeObjectAtIndex:0];
    [nextPlayers addObject:firstGuy];

    NSLog(@"------");
    NSLog(@"%@", [nextPlayers description]);

    //send the match to the servers
    //"theMatch" was recorded in turnBasedMatchmakerViewController:didFindMatch

    [theMatch endTurnWithNextParticipants:nextPlayers
                              turnTimeout:GKTurnTimeoutDefault
                                matchData:updatedMatchData
                        completionHandler:^(NSError *error)
    {
        if (error)
        {
            NSLog(@"WTF?");
        }
    }];

Это приводит к следующему выводу журнала:

size = 26926
(
"<GKTurnBasedParticipant 0x174018630 - playerID:G:1084583147 (local player) status:Active matchOutcome:None lastTurnDate:(null) timeoutDate:(null)>",
"<GKTurnBasedParticipant 0x174018ba0 - playerID:G:12962188 status:Invited matchOutcome:None lastTurnDate:(null) timeoutDate:(null)>"
)
------
(
"<GKTurnBasedParticipant 0x174018ba0 - playerID:G:12962188 status:Invited matchOutcome:None lastTurnDate:(null) timeoutDate:(null)>",
"<GKTurnBasedParticipant 0x174018630 - playerID:G:1084583147 (local player) status:Active matchOutcome:None lastTurnDate:(null) timeoutDate:(null)>"
)

Тем не менее, игрок B не получает приглашение или ход. Игровой центр приложения B игрока не показывает активных игр или ходов. Игровой центр игрока А продолжает показывать, что онеще имеет ожидающий ход. Каждый раз, когда я перезапускаю и повторяю тест, Игрок А набирает очередной ожидающий ход.

Игрок A увольняет игрока: receiveTurnEventForMatch: didBecomeActive сразу после того, как я закончу ход, но для didBecomeActive установлено значение NO.

Итак, я изменил время ожидания до 30 секунд. Через 30 секунд после того, как игрок A заканчивает ход, игрок A запускает didBecomeActive (нет). PlayerB наконец получает приглашение. Игрок B стреляет didBecomeActive со значением YES.

Почему мой ход не сразу переходит к игроку B после того, как игрок A заканчивает ход? Почему у игрока А, кажется, есть еще один ход (который затем истекает и передается игроку Б)?

Ответы на вопрос(0)

Ваш ответ на вопрос