jestem przy założeniu, że wywołanie tej metody GKLocalPlayer na premiery: -setAuthenticateHandler:
(> = iOS7) lub -authenticateWithCompletionHandler:
(< = iOS6)
Jeśli użytkownik anuluje ekran logowania podane, nazywając tych metod znowu nic nie robi, lub raczej procedura obsługi zakończenia jest wywoływana z błędem. Użytkownik będzie musiał następnie zalogować się do GameCenter za pośrednictwem aplikacji GameCenter lub aplikacji Ustawienia. (Podczas testów możesz zalogować się za pomocą aplikacji GameCenter, a następnie wylogować się, a następnie ponownie wyświetlić ekran w swojej aplikacji.) Możesz pokazać UIAlertView, aby użytkownik mógł się zalogować za pomocą aplikacji GameCenter.
Alternatywnie, i nie wiem, czy jest to dozwolone/dozwolone, ale w iOS7 authenticateHandler
ma parametr viewController
przytrzymujący ekran logowania. Jeśli przechowujesz ten kontroler widoku logowania w zmiennej instancji i użytkownik anuluje logowanie, możesz później ponownie wyświetlić ekran logowania, używając UINavigationController
.
Jeśli spróbujesz wyświetlić zapisany kontroler widoku logowania za pomocą -presentViewController:animated:completion:
, przycisk Anuluj kontrolera widoku przestaje działać, ale użycie przycisku UINavigationController
ukrywa przycisk Anuluj i umożliwia nawigację z powrotem do kontrolera widoku.
Będziesz musiał również ukryć ekran logowania ręcznie po zalogowaniu się użytkownika, odpowiadając na GKPlayerAuthenticationDidChangeNotificationName
. Wygląda na to, że programiści nie byli w stanie tego zrobić, więc może nie zatwierdzić, ale działa!
Czy próbowałeś użyć metody authenticateHandler GKLocalPlayer? – san