2012-04-26 9 views
8

Aquí está mi situación:centro de juego no responde a la solicitud authenticateWithCompletionHandler (IOS)

1) El usuario abre mi aplicación por primera vez. Inmediatamente llamo a authenticateLocalUser para tratar de iniciar sesión en Game Center. Aparecerá con éxito la ventana emergente con los botones Iniciar sesión, Crear cuenta y Cancelar.

2) El usuario no desea que entrar en este momento, así que haga clic en Cancelar. (Esta NO es la 3ª vez que hacen clic en "cancelar", y NO recibo el mensaje "Centro de juegos desactivado, inicie sesión en la aplicación de Game Center para habilitar"). El usuario puede continuar utilizando mi aplicación como siempre.

3) El usuario quiere usar Game Center más adelante, así que haga clic en un botón que les he dado a iniciar sesión en el Centro de Juego. Vuelvo a llamar a authenticateLocalUser. Esta vez, la ventana emergente NO aparece. De hecho no pasa nada, excepto que recibo estos mensajes de registro de la consola:

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) He probado tanto empujando inmediatamente el botón que llama a authenticateLocalUser de nuevo, y también de esperar un período de tiempo significativo antes de hacerlo. En cualquier punto que llamo authenticateLocalUser de nuevo, una vez más, no aparece nada, y me sale este error de la función:

Error Domain=GKErrorDomain Code=7 "The requested operation could not be completed because local player is already authenticating." 

Así que lo que parece estar sucediendo es que, cuando llamo authenticateLocalUser en el paso 3, estoy pidiendo Juego Centro para autenticarse, pero se está colgando y no responde a mi solicitud. Luego, en el Paso 4, cuando vuelvo a intentarlo, me dice que no puede procesar mi solicitud porque ya está intentando autenticarse. Sin embargo, he esperado hasta 10 minutos para obtener una respuesta de mi pedido en el Paso 3, y nunca recibí uno del Centro de juegos.

Este es el contenido de mi función authenticateLocalUser. Por lo que recuerdo, no lo cambié de la versión que descargué del código de muestra de Apple.

- (void) authenticateLocalUser 
{ 
    if([GKLocalPlayer localPlayer].authenticated == NO) 
    { 
     [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) 
     { 
      [self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error]; 
     }]; 
    } 
} 

¿Alguien más ha tenido este problema antes o tiene alguna idea sobre lo que podría estar pasando? He estado mirando esto por un tiempo y no estoy realmente seguro de lo que está sucediendo.

Gracias de antemano!

+0

Háganme saber si se solucionó este problema. Estoy enfrentando el mismo problema. Gracias. – DancOfDeth

+0

Newi, desafortunadamente no lo he hecho.Sin embargo, encontré un desarrollador de unidades que enfrenta el mismo problema. No estoy seguro de que haya una solución en este punto; ¿Es esta quizás intencionada (aunque muy extraña) conducta de Apple? – WendiKidd

+0

Tengo el mismo problema ... Pensé que era algo que estaba haciendo mal. –

Respuesta

-1

Hay caso de problema anterior 1. si está utilizando el método de autenticación llamado dos lugares en esta situación crea un problema 2. si se utiliza el método de autenticación primera vez en la clase A y después de ejecutar a continuación, cambiar su lugar de en la clase B sin limpia y reconstruir

en ambos casos sólo limpia y luego reconstruir.

Yo también estoy frente mismo problema, pero tengo la solución y resuelto.

+1

Lo siento, no entiendo tu respuesta. ¿Puedes aclarar por favor? ¿Cuál es exactamente tu solución? – WendiKidd

1

tuve el mismo problema cuando tuve otro centro de juego autenticados cuenta. Sucede cuando inicias sesión en algún juego con tu cuenta normal y al mismo tiempo con tu prueba.

Acaba de reajustar la configuración del dispositivo y no inicien sesión con su cuenta real en otros juegos durante la prueba. Sucede cuando haces ambas cosas al mismo tiempo. Restablezca la configuración de su dispositivo, limpie el proyecto y debería estar bien. Y use solo cuentas de prueba de iTunes para probar su juego.

+0

Acabo de perder unas horas tratando de descubrir por qué mi código estaba fallando ... Acaba de cerrar sesión en GameCenter y funciona, gracias a Apple ... – Gregory

Cuestiones relacionadas