2013-02-17 5 views
7

Dies ist ein Nachfolger zu this question. Wenn Sie keine beliebige Rückrufe zu handleTurnEventForMatch:didBecomeActive: erhalten, versuchen Sie die Antwort dort.handleTurnEventForMatch: didBecomeActive: Callbacks kommen nur teilweise an

In meinem Spiel erhalte ich nur Turn Event-Benachrichtigungen. Aber wenn ich zurück zum matchMakerViewController gehe und das Spiel neu lade, ist der Zustand immer korrekt.

Mein Spiel lädt den Spielzug mehrmals während jeder Runde hoch. Anekdotisch scheint es, dass wenn das andere Gerät eine Benachrichtigung für den Zug eines Gegners erhält, es weniger wahrscheinlich ist, weitere Benachrichtigungen für diesen Zug zu erhalten. Dies ist jedoch nicht 100%.

Im Allgemeinen scheint meine Internetverbindung ziemlich gut zu funktionieren.

Irgendwelche Ideen, was könnte dies verursachen?

+0

Haben Sie das gleiche Problem. Wenn die Anwendung gestartet wird, ruft die Methode "handleTurnEventForMatch" die gleichen Übereinstimmungszeiten auf. – Sergio

+0

Genau das gleiche Problem. Meistens kann nur ein Gerät an den anderen senden und der andere kann nicht antworten. Aber es ist die Einbahnstraße, die sich von Spiel zu Spiel unterscheidet. –

Antwort

8

Ich habe endlich das Problem herausgefunden.

In Ordnung, wenn Sie die GKTurnBasedMatchmakerViewController verwenden, stiehlt es die Delegierung von Ihrem aktuellen Delegaten.

Es hat wohl so etwas wie:

[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = self; 

Dies macht durchaus Sinn, da die Viewcontroller, wenn Änderungen von Gamecenter auftreten aktualisieren muss, so dass es die Delegierten für die GKTurnBasedEventHandler wird.

Wenn Sie die Übertragung zu Ihrem eigenen Objekt zurückkehren wollen, obwohl Sie diese Zeile setzen sollten:

[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = self; 

An der Spitze aller Funktionen im GKTurnBasedMatchmakerViewControllerDelegate Protokoll.

+2

Sie sparen mir einfach eine Menge Zeit. Vielen Dank! –

+0

Ich bin froh, dass dies für einige Leute funktioniert. Leider scheint es nicht für mich zu arbeiten. –

+1

Ich habe das gleiche Problem, aber Ihre vorgeschlagene Lösung hilft nicht (auf iOS 6.1.x, d. H.). Ich behaupte, dass der Delegat immer noch das ist, was ich will, dass er ganz oben in allen Funktionen des besagten Protokolls steht, und keines davon schlägt fehl. Wenn Apple den Delegaten in seiner Implementierung von GKTurnBasedMatchmakerViewController stehlen würde, warum sollte er den Wert nicht vor dem Aufruf einer dieser Funktionen wiederherstellen? – Drux