2010-12-22 10 views
8

Quiero saber si el usuario que ejecuta mi aplicación está conectado a GameCenter (a través de la aplicación GameCenter o a través de otra aplicación), cuando ejecuto mi aplicación por primera vez.¿Puedo verificar el estado de autenticación de Game Center fuera de mi aplicación?

descubrí que si marco el booleano:

[GKLocalPlayer localPlayer].authenticated) 

devuelve falso. Creo que una cosa que podría solucionar este problema se está ejecutando en el arranque siguiente:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) 

Sin embargo, en caso de que el usuario no está conectado esto trae el emergente centro de juego hasta que se pide una cuenta existente o crear una nueva.

Así que mi pregunta es: ¿hay alguna forma de conocer mi GC conectado al usuario fuera de mi aplicación mientras mi aplicación estaba inactiva, sin mostrar la alerta anterior en caso de que no esté conectado?

Gracias!

+0

que estoy enfrentando el mismo problema ahora, ¿alguna vez encontrar una solución para esto? – filipe

+1

Desafortunadamente no – Idan

+0

Supongo que esto se debe a que la aplicación necesita que el usuario inicie sesión en los servidores de la zona de pruebas (mientras que la aplicación no está activa, es decir), y cuando inicia sesión a través de la aplicación Game Center está registrado en los servidores en vivo, por lo que la aplicación tiene que solicitarle que inicie sesión de nuevo en los servidores de Sandbox. Pero no puedo encontrar la confirmación para eso. – filipe

Respuesta

0

Me parece que Game Center autentica al usuario dentro de cada aplicación diferente y no globalmente a través de iOS. Por lo tanto, no puede verificar el estado de autenticación del usuario sin utilizar el método authenticateWithCompletionHandler:.

Por cierto, creo que debería revisar este mecanismo de interfaz de usuario. Te traerá un par de problemas. La autenticación de Game Center utilizará una cuenta global (en primer lugar, la cuenta de la App Store) compartida entre todas las aplicaciones, y debe confiar en Game Center para gestionar la autenticación. Suponiendo que puede hacer lo que está buscando (y creo que eso no es posible), si ya ha iniciado sesión a través de una aplicación de un tercero, podrá iniciar sesión en GC incluso en el suyo; pero si no ha iniciado sesión fuera de su aplicación, no podrá usar GC en su aplicación.

Esto podría ser un problema para usted, ya que si el usuario tiene una cuenta válida y actualmente ha cerrado sesión en la App Store desde la aplicación de configuración, no podrá iniciar sesión en GC para su aplicación (ya que no quiero mostrarle al usuario la alerta de inicio de sesión). Deberá confiar en aplicaciones de terceros para habilitar todas las funciones de GC. Entonces, GC se volverá inútil, en este punto.

¿Es esto realmente lo que quiere de su aplicación? ¿Por qué habilitar GC si el usuario probablemente no podrá usarlo de manera eficiente?

+0

Has entendido mal mi pregunta.Me preguntaba si es posible saber si el usuario está actualmente conectado a GC usando otra aplicación (una de terceros de Apple), sin presentar la vista de alerta pidiéndole que se conecte, en caso de que no estuviera realmente conectado. Por ejemplo, un escenario imaginario sería que el usuario ya está conectado a GC, y si es así lo usaría, de lo contrario me gustaría usar Open Feint, sin usar GC (y, en consecuencia, no pedirle al usuario que lo haga). inicie sesión en él). Despejado ahora ? – Idan

+0

Entendí tu pregunta. Lo que estoy diciendo es que la conexión a Game Center está limitada a cada aplicación, por lo que no puedes compartir la conexión de GC entre las aplicaciones. Cada aplicación debe conectarse, dependiendo de los métodos SDK predeterminados (y alertas, por supuesto). – marzapower

+0

Bueno, si compartes conexión entre aplicaciones, ese es el punto ... inicias sesión una vez y luego ya estás conectado en todas las demás aplicaciones. Sin embargo, supongo que tiene razón, ya que no encontré ninguna otra indicación de que sea posible, parece que tiene que ejecutar la función de autenticación para actualizar realmente los datos del GC por aplicación. – Idan

4

Puede hacerlo en iOS 6.0 o superior:

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){ 
     if (viewController == nil && error == nil) { 
      NSLog(@"Here, you know that the user has already signed to Game Center, whether in through your app or not."); 
     } 
    }; 
+0

Trabaja como un encanto. No olvides habilitar Game Center desde itunesconnect; de lo contrario, recibirás un error sin importar si el usuario ha iniciado sesión en GC o no. –

Cuestiones relacionadas