Si lo deseas, puedes usar un identificador de aplicación de Facebook en varias aplicaciones para iOS (por ejemplo, en distintas versiones gratuitas y de pago de tu aplicación).
Define un parámetro de sufijo de esquema de URL ("FacebookUrlSchemeSuffix") en el archivo ".plist" de la aplicación.
Nota: El sufijo solo puede contener caracteres alfabéticos.
El archivo .zip del SDK incluye un paquete "FacebookSDKStrings.bundle" que contiene cadenas localizadas para los recursos del SDK. Inclúyelo en tu aplicación y activa la internacionalización de base, tal como se describe en la documentación de Apple.
Puedes descargar las versiones anteriores del SDK en el área de descargas para iOS.
El cuadro de diálogo de contenido compartido nativo forma parte de la aplicación para iOS de Facebook y, por ese motivo, no puede funcionar en un simulador. Usa un dispositivo físico para probar este cuadro de diálogo. Actualmente estamos trabajando para poder probarlo en el simulador.
Asegúrate de haber importado las instrucciones "import" correctas en la parte superior de cada archivo donde intentas usar las clases del SDK de Facebook. Por ejemplo:
#import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKShareKit/FBSDKShareKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h>
Al usar marcos con Objective-C, las clases que usan categorías para extender las clases existentes no se cargan de forma automática.
Cuando intentas llamar a un método que se ha extendido en estas clases, se produce el error "unrecognized selector sent to instance". Las clases que se usan desde Interface Builder en Xcode tampoco se cargan automáticamente (por ejemplo, si se añade la clase "FBSDKLoginButton" a la interfaz creando una visualización en el archivo .xib y, a continuación, se establece como "FBSDKLoginButton" desde la interfaz de usuario de Interface Builder). Por eso, cuando se intenta llamar a métodos desde estas clases, se produce el error "unrecognized selector sent to instance". Tienes dos opciones para resolver este problema.
Puedes cargar la clase de forma manual en el método "application:didFinishLaunchingWithOptions:" del delegado de la aplicación con la llamada siguiente:
[FBSDKLoginButton class];
La otra opción es añadir la marca del enlazador "-ObjC". Con esta marca se indica al enlazador que cargue todos los archivos de objeto en el SDK que definen una clase o categoría de Objective-C. De este modo se consigue que todas las clases estén listas para funcionar desde el primer momento, aunque aumenta el tamaño del archivo ejecutable (debido al código de objeto adicional que se carga en la aplicación).
Para añadir la marca "-ObjC", haz clic en el objetivo del proyecto y selecciona la pestaña "Build Settings". Desde aquí, ve a "Linking" y haz doble clic en "Other Linker Flags" para añadir la marca "-ObjC".
La clase "FBSDKRequestConnection" usa "NSURLConnection", que requiere un objeto "RunLoop" activo. Si se utiliza fuera del subproceso principal, deberás administrarlo por tu cuenta.
De forma alternativa, puedes establecer la propiedad "delegateQueue" en "FBSDKRequestConnection".
Es habitual que el archivo ".plist" presente errores de configuración. Asegúrate de que este archivo incluya filas para los objetos "FacebookAppID" y "FacebookDisplayName", así como una entrada con el tipo de URL para la propiedad "fb{app-id}".
Si obtienes resultados inesperados al realizar solicitudes de la API Graph, activa el modo de depuración añadiendo este código antes de las distintas solicitudes:
[FBSettings setLoggingBehavior: [NSSet setWithObject:FBSDKLoggingBehaviorGraphAPIDebugInfo]];
Usa el método "FBSDKLoggingBehaviorGraphAPIDebugWarning" si quieres eliminar los mensajes informativos y mantener solo las advertencias.
Al activar este comportamiento de registro, se añade el parámetro "debug" a todas las solicitudes de la API Graph y aparecen en la consola todos los problemas que se producen.
Puedes obtener más información sobre el modo de depuración de la API Graph aquí.
El SDK informará de una cancelación si el usuario toca explícitamente el botón "Cancelar" en los cuadros de diálogo de inicio de sesión o si cambia de aplicación de forma manual para volver a la tuya (proceso conocido como "cancelación implícita"). Debes asegurarte de no ejecutar ningún proceso de inicio de sesión como parte del ciclo de vida del delegado de la aplicación (por ejemplo, dentro del método "application:openURL:sourceApplication:annotation:"), ya que esta operación tendría el mismo efecto que una cancelación implícita. Si no puedes evitarlo, resuelve el inicio de sesión más tarde en la cola principal, de forma que el ciclo de vida del delegado de la aplicación se haya completado antes.
En el cuadro de diálogo de contenido compartido se muestran las notificaciones sobre los métodos "sharer:didCompleteWithResults:" y "sharerDidCancel:" del delegado de dicho cuadro cuando tiene lugar una acción de usuario.
Si obtienes resultados inesperados al realizar solicitudes, activa la depuración para la clase "FBSDKGraphRequests". Añade este código antes de las solicitudes:
[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorNetworkRequests];
Podrás depurar cualquier problema visualizando directamente las solicitudes y las respuestas de los servidores.
Si es posible, consulta las demás constantes de "FBSDKLoggingBehavior*" definidas en "FBSDKSettings.h" para ver otros elementos que puedes registrar.