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ę !!
Proszę dać mi znać, jeśli problem został rozwiązany. Mam do czynienia z tym samym problemem. Dzięki. – DancOfDeth
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
Mam ten sam problem ... Myślałem, że to coś, co robiłem źle. –