2012-09-19 40 views
10

Segunda actualización Después de hacer un poco más de excavación, parece haber un problema mayor en juego.Facebook SDK 3.0 IOS 6 de devolución de llamada después de iniciar sesión no se llama

La razón por la cual openURL no se activa, es que la aplicación parece congelarse cuando vuelve a estar en primer plano.

Si abro mi aplicación, hago clic en el botón de inicio (regrese a la pantalla de inicio) y vuelvo a cargar mi aplicación (no en relanzamiento completo sino solo una restauración), la aplicación se abre, pero todo está congelado.

- (void) applicationWillEnterForeground: (UIApplication *) aplicación

se dispara cuando la aplicación se vuelve, sin embargo después de que no pasa nada. Usando el simulador para IOS 6.0, no sufro ninguna caída, pero la aplicación simplemente se queda allí sin hacer nada. Haga clic en la pantalla no hace nada. Si hago clic en la pantalla de inicio, puedo volver a la pantalla de inicio.

Así que el motivo por el que openIURL no se activa es porque la aplicación se congela cuando vuelve del inicio de sesión de Facebook, ya sea desde la aplicación Safari o Facebook. No tiene nada que ver con el SDK de Facebook.

¿Por qué sucede esto?

Actualización Parece que el problema está relacionado con la llamada a openURL. La aplicación se abre cuando la URL personalizada se ejecuta desde la aplicación safari o facebook. Si creo una aplicación nueva, funciona.

Otra cuestión relacionadaapplication open Url method not called after user authenticates the facebook

Tengo una aplicación que utiliza Facebook login con el Facebook SDK 3.0.

Bajo IOS 5 el flujo funciona como está previsto y lo hago ver la salida de se registra en:

NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream",@"offline_access",@"email",nil]; 

[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:YES 
completionHandler:^(FBSession *session, 
        FBSessionState status, 
        NSError *error) { 
    if(session.isOpen){ 
     NSLog(@"IS LOGGED IN"); 
    }         
}]; 

[permissions release]; 

en mi aplicación delegado la función openURL es el siguiente

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [[FBSession activeSession] handleOpenURL:url]; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [[FBSession activeSession] handleOpenURL:url]; 
} 

Una vez más, bajo IOS 5 se llama a la función openURL después de un inicio de sesión exitoso a través de Facebook.

En IOS 6, cuando ejecuto openActiveSessionWithPermission (inicio de sesión) ... nunca se devuelve la llamada a OpenURL.

que han suministrado la información necesaria en mi archivo .Plist según la documentación facebook

FacebookAppID = (My Facebook App ID) 

y

URL types 
-> Item 0 
    -> URL Schemes 
     -> Item 0 = (My Facebook App ID) 
+0

No está seguro de lo que está pasando con su aplicación. Pero en mi aplicación, no tengo ese primer método de delegado de la aplicación en mi Appdelegate.m. Solo el 2º. Además, es posible que desee echar un vistazo a mi proyecto de ejemplo en mi blog tutorial: http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html. Además, me gustaría añadir, si tienes 2 aplicaciones (como Lite y Pro), usar el mismo FacebookAppID para ambas aplicaciones provocará un bloqueo. Hay algunas cosas adicionales que hacer si desea utilizar el mismo fbappid para 2 o más aplicaciones (consulte la wiki de Facebook devs) – GeneCode

+0

También tengo el mismo problema pero con Facebook SDK 2.0, así que dudo que sea iOS 6 relacionado –

+0

Por el manera openActiveSessionWithPermissions ha quedado obsoleta en IOS 3.1, pero no creo que esté relacionado con eso. Debe otorgar permiso para leer withOpenActiveSessionWithReadPermissions y openActiveSessionWithPublishPermissions para publicar –

Respuesta

1

El problema estaba relacionado con la forma en que estaba usando TWTweetComposeViewController en mi aplicación, por lo que no está relacionado con el SDK de Facebook después de todo.

El problema era que estaba inicializando mi TWTweetComposeViewController en mi ViewDidLoad y no lo usé hasta que lo necesité. Sin embargo, si el TWTweetComposeViewController no se muestra pero se inicia, congelará su aplicación cuando ingrese desde el modo de fondo.

La solución es iniciar TWTweetComposeViewController solo cuando esté a punto de mostrarlo.

0

esto es Shireesh de Facebook. ¿Puede por favor presentar un error en nuestro sitio web de desarrolladores para que podamos tener una visión detallada de este. Asegúrese de proporcionar pasos de reproducción detallados y adjunte una captura de pantalla si es posible. https://developers.facebook.com/bugs

1

¿Podría ser porque su aplicación está configurada para no ejecutarse en segundo plano, como se establece en su aplicación? He estado teniendo este mismo problema. Parece que, si la aplicación se deja ejecutándose en segundo plano, volverá y llamará a openURL.Pero si la aplicación no se ejecuta en segundo plano, volverá y llamará a la aplicación: didFinishLaunchingWithOptions en su lugar, y NO llamará a openURL. Es posible obtener la URL de entre las opciones de lanzamiento:

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey]; 

pero no he encontrado la manera de llamar a esto de modo que tenga el mismo efecto que la aplicación: openURL, al regresar de la autenticación de Facebook. Espero que esto ayude a algunos.

+0

hey, estoy teniendo el mismo problema, ¿cómo lo resolvió? – Andres

0

puedo configurar dos sufijos menores de Facebook para mi aplicación: gratuitos y de pago, tales como fbxxxxxxpaid

Ellos funcionan perfectamente bien bajo SDK 2.0 pero en 3.2 mi aplicación no fue llamado de nuevo y me quedé atrapado con un lienzo vacío con un botón cancelar

Quité el sufijo de los Esquemas de URL y funcionó al instante.

tuve que actualizar mi aplicación de acuerdo con esta https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/

Cuestiones relacionadas