2012-04-26 11 views
8

Oto moja sytuacja:Centrum gier nie reaguje na authenticateWithCompletionHandler życzenie (iOS)

1) Użytkownik otwiera moją aplikację po raz pierwszy. Natychmiast wywołuję funkcję authenticateLocalUser, aby spróbować zalogować się do Game Center. Pojawi się okno z przyciskami Zaloguj się, Utwórz konto i Anuluj.

2) Użytkownik nie chce się teraz logować, więc kliknął Anuluj. (NIE jest to po raz trzeci kliknięcie "anuluj", a NIE otrzymuję "Centrum gier jest wyłączone, zaloguj się z aplikacji Game Center, aby włączyć".) Użytkownik może dalej normalnie korzystać z mojej aplikacji.

3) Użytkownik chce później korzystać z Game Center, więc klika przycisk, który dałem im, aby zalogować się do Game Center. Ponownie wywołuję funkcję authenticateLocalUser. Tym razem popup NIE pojawi się. W rzeczywistości nic się nie dzieje, poza tym, że te komunikaty dziennika konsoli:

2012-04-26 08:38:42.861 Clink[332:707] authenticateWithCompletionHandler: enter 
2012-04-26 08:38:42.863 Clink[332:707] authenticateWithCompletionHandler: exit 

4) Ja testowałem zarówno bezpośrednio, naciskając przycisk, który wywołuje authenticateLocalUser ponownie, a także czeka znaczny okres czasu, zanim ten sposób. Bez względu na punkt nazywam authenticateLocalUser znowu, po raz kolejny pojawia się nic, a ja dostać ten błąd z funkcji:

Error Domain=GKErrorDomain Code=7 "The requested operation could not be completed because local player is already authenticating." 

Więc co wydaje się dzieje jest to, że gdy zgłoszę authenticateLocalUser w kroku 3, pytam Grę Wyśrodkuj, aby się uwierzytelnić, ale odkłada słuchawkę i nie odpowiada na moje żądanie. Następnie w kroku 4, gdy spróbuję ponownie, mówi mi, że nie może przetworzyć mojego żądania, ponieważ już próbuje uwierzytelnić. Jednak czekałem do 10 minut na odpowiedź z mojej prośby w kroku 3 i nigdy nie dostałem żadnej z Game Center.

To jest treść funkcji authenticateLocalUser. O ile pamiętam, nie zmieniłem go z wersji pobranej z przykładowego kodu Apple.

- (void) authenticateLocalUser 
{ 
    if([GKLocalPlayer localPlayer].authenticated == NO) 
    { 
     [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) 
     { 
      [self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error]; 
     }]; 
    } 
} 

Czy ktoś jeszcze napotkał ten problem przed lub ma jakieś pomysły na temat tego, co może się dziać? Patrzyłem na to od jakiegoś czasu i nie jestem do końca pewien, co się dzieje.

Z góry dziękuję !!

+0

Proszę dać mi znać, jeśli problem został rozwiązany. Mam do czynienia z tym samym problemem. Dzięki. – DancOfDeth

+0

Newi, niestety nie mam.Zauważyłem jednak, że deweloper jedności boryka się z tym samym problemem. Nie jestem pewien, czy w tym momencie istnieje nawet rozwiązanie; czy jest to być może zamierzonym (aczkolwiek bardzo dziwnym) zachowaniem Apple? – WendiKidd

+0

Mam ten sam problem ... Myślałem, że to coś, co robiłem źle. –

Odpowiedz

-1

Istnieje przypadek dla powyższego problemu 1. Jeśli korzystasz z metody uwierzytelniania, zadzwoń do dwóch miejsc w tej sytuacji, aby utworzyć problem 2. Jeśli używasz metody uwierzytelniania po raz pierwszy w klasie A i po wykonaniu, zmień ich na miejscu w klasie B bez czyszczenia i odbudowywania

w obu przypadkach wystarczy wyczyścić, a następnie odbudować.

Mam również do czynienia z tym samym problemem, ale mam rozwiązanie i rozwiązany.

+1

Przykro mi, nie rozumiem twojej odpowiedzi. Czy możesz to wyjaśnić? Jakie jest dokładnie twoje rozwiązanie? – WendiKidd

1

Miałem ten sam problem, gdy miałem inne konto Game Center uwierzytelnione. Dzieje się tak, gdy logujesz się do jakiejś gry ze swoim zwykłym kontem, a jednocześnie z testowym.

Po prostu zresetuj ustawienia urządzenia i nie loguj się przy pomocy swojego prawdziwego konta w innych grach podczas testowania. Zdarza się, gdy robisz obie naraz w tym samym czasie. Zresetuj ustawienia urządzenia, oczyść projekt i wszystko powinno być w porządku. I używaj tylko testowych kont iTunes, aby przetestować swoją grę.

+0

Po prostu straciłem kilka godzin, próbując dowiedzieć się, dlaczego mój kod się nie powiódł ... Po prostu wylogowałem się z GameCenter i działa, dzięki Apple ... – Gregory

Powiązane problemy