sto supponendo che si sta chiamando questo metodo GKLocalPlayer sul lancio: -setAuthenticateHandler:
(> = iOS7) o -authenticateWithCompletionHandler:
(< = iOS6)
Se l'utente annulla la schermata di login presentato, si chiamano questi metodi ancora una volta non fa nulla, o meglio, il gestore di completamento viene chiamato con un errore. L'utente dovrà quindi accedere a GameCenter tramite l'app GameCenter o tramite l'app Impostazioni. Durante i test, è possibile accedere tramite l'app GameCenter, quindi eseguire il logout, dopodiché è possibile visualizzare nuovamente la schermata nella propria app. È possibile visualizzare un UIAlertView che informa l'utente di accedere tramite l'app GameCenter.
In alternativa, e non so se questo è consentito/approvato, ma in iOS7 lo authenticateHandler
ha un parametro viewController
che contiene la schermata di accesso. Se si memorizza questo controller di visualizzazione login in una variabile di istanza e l'utente annulla l'accesso, è possibile presentare nuovamente la schermata di accesso in un secondo momento utilizzando uno UINavigationController
.
Se si tenta di presentare la vista del regolatore di accesso salvata con -presentViewController:animated:completion:
tasto del controller della vista Annulla non funziona più, ma utilizzando una UINavigationController
nasconde il pulsante Annulla e consente la navigazione di nuovo al vostro proprio controller della vista.
Avrete anche bisogno di nascondere la schermata di login manualmente dopo che l'utente ha effettuato il login rispondendo a GKPlayerAuthenticationDidChangeNotificationName
. Non sembra che gli sviluppatori intendessero farlo, quindi non può approvare, ma funziona!
fonte
2014-01-03 03:01:11
Hai provato a utilizzare il metodo authenticateHandler di GKLocalPlayer? – san