GameCenter: endTurnWithNextParticipants nicht vorankommen

In der Sandbox-Umgebung habe ich Probleme, ein rundenbasiertes Match auf den nächsten Spieler vorzuschieben.

Anfangsbedingungen

Player A und Player B auf Gerät A bzw. Gerät B.Beide in der Sandbox eingeloggtBeide Spieler können die GC-Statusmeldung des anderen sehenPlayer A erstellt ein Match und lädt Spieler B @ ePlayer A beendet den Zug

In meiner "End Turn" -Funktion mache ich Folgendes:

    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?");
        }
    }];

Das erzeugt die folgende Protokollausgabe:

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)>"
)

Spieler B erhält jedoch keine Einladung oder Runde. Die Game Center-App von Spieler B zeigt keine aktiven Spiele oder Spielzüge an. Das Game Center von Spieler A zeigt weiterhin, dass erimmer noc ist an der Reihe. Jedes Mal, wenn ich den Test neu starte und erneut durchführe, stapelt Spieler A eine weitere anstehende Runde.

Player Ein Spieler feuert ab: receiveTurnEventForMatch: didBecomeActive direkt nachdem ich den Zug beendet habe, aber didBecomeActive ist auf NO gesetzt.

So habe ich dann das Timeout auf 30 Sekunden geändert. 30 Sekunden nachdem Spieler A den Zug beendet hat, feuert Spieler A didBecomeActive (no). PlayerB erhält schließlich eine Einladungsaufforderung. Spieler B feuert didBecomeActive mit dem Wert YES ab.

Warum rückt mein Zug nicht sofort zu Spieler B vor, nachdem Spieler A den Zug beendet hat? Warum scheint Spieler A noch einen Zug zu haben (der dann abläuft und zu Spieler B übergeht)?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage