Quando si utilizza authenticateHandler in iOS 6, il centro giochi non presenterà la vista di accesso se l'utente lo annulla. Realizzo che Game Center chiuderà automaticamente un'app dopo 3 tentativi di annullamento, ma sto parlando di solo 2 tentativi. Se annullano il login, devono lasciare l'app e tornare prima che il centro giochi possa presentare l'accesso anche attraverso l'autenticazione. Handler viene nuovamente impostato. Qualche idea su come gestire questo caso in iOS 6?iOS 6 Game Center authenticateHandler non può effettuare il login dopo un annullamento
Funziona bene quando si utilizza il metodo più vecchio authenticateWithCompletionHandler:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0
GKLocalPlayer.localPlayer.authenticateHandler = authenticateLocalPlayerCompleteExtended;
#else
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:authenticateLocalPlayerComplete];
#endif
La ragione per questo è importante per la mia app è che richiede Game Center per il multi-player. L'app tenta di autenticare il centro del gioco al momento del lancio, ma se l'utente annulla non glielo chiediamo al momento del lancio, in modo che non vengano tormentati. Quello che facciamo è mostrare un pulsante di accesso al Game Center se non sono registrati quando selezionano il multi-giocatore. Il pulsante di accesso impone l'accesso al centro giochi chiamando authenticateWithCompletionHandler (e ora impostando nuovamente GKLocalPlayer.localPlayer.authenticateHandler).
Sembra che lo stiate già facendo, ma chiamando [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler: nil] farà sì che l'authenticateHandler venga chiamato di nuovo con un controller della vista di autenticazione. Questo metodo è deprecato anche se in iOS6. – Greg
Sto usando la chiamata ammortizzata per farlo funzionare, ma sto cercando il modo "giusto" per farlo senza usare le chiamate deprecate. Ho provato a impostare il nuovo GKLocalPlayer.localPlayer.authenticateHandler su zero e poi di nuovo sul gestore per vedere se funzionasse, e ho ottenuto un'eccezione cercando di impostarlo su zero.Non ho provato a impostarlo su un gestore diverso per vedere se ciò avrebbe attivato un accesso (che sembrava davvero molto hacky) –
Ho provato a passare il gestore a un altro gestore e anche questo non attiva una nuova finestra di accesso . Ho postato sui forum degli sviluppatori per vedere se qualcuno ha qualche consiglio, e posteremo di nuovo qui se sentirò qualcosa. https://devforums.apple.com/message/744983 – Greg