2013-02-17 15 views
7

Jest to kontynuacja do this question. Jeśli nie otrzymujesz oddzwonienia żadnych oddzwonień do handleTurnEventForMatch:didBecomeActive:, spróbuj tam odpowiedzi.handleTurnEventForMatch: didBecomeActive: wywołania zwrotne przychodzą tylko w pewnym okresie czasu

W mojej grze otrzymuję powiadomienia zwrotne o niektórych wydarzeniach. Ale jeśli wrócę do matchMakerViewController i ponownie załaduję mecz, stan będzie zawsze poprawny.

Moja gra przesyła stan skrętu wiele razy podczas każdej tury. Anegdotycznie wydaje się, że jeśli drugie urządzenie otrzyma jedno powiadomienie dla tury przeciwnika, jest mniej prawdopodobne, że otrzyma dalsze powiadomienia w tej samej turze. Jednak nie jest to 100%.

Ogólnie moje połączenie internetowe działa całkiem nieźle.

Jakieś pomysły, które mogą być przyczyną?

+0

Mają ten sam problem. Po uruchomieniu aplikacji metoda handleTurnEventForMatch wywoływała takie same czasy dopasowania do czasu. – Sergio

+0

Masz dokładnie ten sam problem. W większości przypadków tylko jedno urządzenie może wysyłać do drugiego, a drugie nie może odpowiadać. Ale kierunek jednokierunkowy różni się od dopasowania do dopasowania. –

Odpowiedz

8

W końcu wymyśliłem problem.

Jeśli używasz GKTurnBasedMatchmakerViewController, kradnie delegację od obecnego uczestnika.

To pewnie coś podobnego:

[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = self; 

To ma sens, gdy viewcontroller musi aktualizować w razie wystąpienia zmian od GAMECENTER, więc staje się delegatem na GKTurnBasedEventHandler.

Jeśli chcesz powrócić delegację do własnego obiektu chociaż należy umieścić ten wiersz:

[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate = self; 

Na samym szczycie wszystkich funkcji w protokole GKTurnBasedMatchmakerViewControllerDelegate.

+2

Po prostu oszczędzasz mi mnóstwo czasu. Dzięki! –

+0

Cieszę się, że to działa dla niektórych osób. Niestety, wygląda na to, że nie działa dla mnie. –

+1

Mam ten sam problem, ale sugerowane rozwiązanie nie pomaga (na iOS 6.1.x, to jest). Zapewniam, że delegat jest nadal tym, co chcę, aby był na szczycie wszystkich funkcji we wspomnianym protokole i żadna z nich nie zawodzi. Jeśli Apple miałoby ukraść delegata w implementacji GKTurnBasedMatchmakerViewController, dlaczego nie przywróciłby wartości przed wywołaniem którejkolwiek z tych funkcji? – Drux

Powiązane problemy