Después de que integras el inicio de sesión con Facebook, la opción para compartir en Facebook o Facebook Gaming, se registran y recopilan automáticamente determinados eventos de la app en el administrador de eventos, a menos que desactives el registro automático de eventos. Recomendamos a todos los desarrolladores de apps que usan el inicio de sesión con Facebook, la opción para compartir en Facebook o Facebook Gaming que comprendan cómo opera esta funcionalidad. Para obtener información sobre qué información se recopila y cómo desactivar el registro de eventos de la app de manera automática, consulta Registro automático de eventos de la app.
Puedes encontrar información adicional sobre el SDK de FB para iOS aquí.
En esta guía, se detalla cómo activar la función de compartir contenido en Facebook desde tu app para iOS. Si alguien comparte contenido desde tu app, dicho contenido aparecerá en su biografía y en el feed de sus amigos.
Para poder agregar la función de compartir a tu app, tienes que hacer lo siguiente:
.plist
de la app pueda acceder a las fotos.FBSDKShareKit.framework
a tu proyecto.No es necesario que tu app complete previamente el contenido que se va a compartir. Esta práctica infringe la Política de la plataforma de Facebook. Consulta las Políticas para desarrolladores.
Primeros pasos con el SDK para iOSCada tipo de contenido tiene una interfaz que puedes utilizar para mostrarlo y que se ajusta a SharingContent
. Una vez que modeles el contenido, agrega a tu app una interfaz para compartir que se ajuste a Sharing
o usa la clase ShareDialog
proporcionada.
Cuando se comparten enlaces desde tu app en Facebook, se incluye una contentURL
con el enlace para compartir. Crea el contenido para compartir enlaces con el modelo ShareLinkContent
.
A continuación, se proporciona un ejemplo de cómo puedes activar la función de compartir:
guard let url = URL(string: "https://developers.facebook.com") else { // handle and return } let content = ShareLinkContent() content.contentURL = url let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
Nota: Cuando una app comparte enlaces a las tiendas de iTunes o Google Play, no publicamos ni las imágenes ni las descripciones que se especifican en el contenido compartido. Por el contrario, publicamos información sobre la app que extraemos directamente de la tienda de apps mediante WebCrawler. Es posible que no se incluyan imágenes. Para obtener una vista previa del contenido compartido mediante un enlace a iTunes o Google Play, especifica la URL en el depurador de contenido compartido.
Los usuarios de tu app pueden compartir fotos en Facebook con el cuadro de diálogo de contenido compartido o mediante una interfaz personalizada:
Crea el contenido para compartir fotos mediante el modelo FBSDKSharePhotoContent
.
func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { guard let image = info[.originalImage] as? UIImage else { // handle and return return } let photo = SharePhoto( image: image, userGenerated: true ) var content = SharePhotoContent() content.photos = [photo] // use the content }
Los usuarios de tu app pueden compartir videos en Facebook mediante el cuadro de diálogo de contenido compartido o mediante tu propia interfaz personalizada.
Crea el contenido para compartir videos mediante el modelo FBSDKShareVideoContent
. Puedes consultar la lista completa de atributos en la referencia de FBSDKShareVideoContent
.
func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { let video: ShareVideo if #available(iOS 11, *) { guard let videoAsset = info[.phAsset] as? PHAsset else { return } video = ShareVideo(videoAsset: videoAsset) } else { guard let url = info[.referenceURL] as? URL else { return } video = ShareVideo(videoURL: url) } }
Las personas que utilizan tu app pueden compartir en Facebook una combinación de fotos y videos mediante el cuadro de diálogo de contenido compartido. Ten en cuenta lo siguiente:
Crea tu contenido multimedia para compartir con el modelo ShareMediaContent
.
let photo = SharePhoto(...) let video = ShareVideo(...) var content = ShareMediaContent() content.media = [photo, video]
Una vez que crees un modelo para administrar tu contenido, puedes desencadenar los cuadros de diálogo de contenido compartido o de mensajes.
Facebook ofrece botones nativos para desencadenar la función de compartir en iOS.
El botón "Compartir" permite a los usuarios compartir contenido en su biografía de Facebook, en la biografía de un amigo o en un grupo. El botón "Compartir" llama a un cuadro de diálogo de contenido compartido. Para incluir un botón "Compartir" en tu vista, agrégale el siguiente fragmento de código:
var button = FBShareButton() button.shareContent = content // Add button to view
Con el botón "Enviar", los usuarios pueden enviar fotos, videos y enlaces en privado a sus amigos y contactos mediante la app de Facebook Messenger. El botón "Enviar" llama a un cuadro de diálogo de mensajes. Para incluir un botón "Enviar" en tu vista, agrégale el siguiente fragmento de código:
var button = SendButton() button.shareContent = content // Add button to view
Si la app de Messenger no está instalada, el botón "Enviar" estará atenuado. Para comprobar si es posible usar el botón "Enviar" en el dispositivo actual, utiliza la propiedad de SendButton
isImplicitlyDisabled
:
Para compartir mediante las funciones integradas en Facebook, debes definir el contenido, como se indica en la sección Modelar contenido anterior y, a continuación, llamar al cuadro de diálogo de contenido compartido. Por ejemplo, para compartir un enlace mediante el cuadro de diálogo de contenido compartido, debes realizar lo siguiente:
guard let url = URL(string: "https://developers.facebook.com") else { // handle and return } let content = ShareLinkContent() content.contentURL = url let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
En versiones anteriores del SDK para iOS, tu app tenía que comprobar si se había instalado una app de Facebook nativa antes de abrir el cuadro de diálogo de contenido compartido. Si la persona en cuestión no tenía instalada la app, debías proporcionar tu propio código para llamar al cuadro de diálogo alternativo.
Ahora, el SDK comprueba automáticamente si está instalada la app de Facebook nativa. De no ser así, el SDK desvía a las personas a su navegador predeterminado y abre el cuadro de diálogo de feed.
Si está instalada la app de Facebook nativa, no se cambiará a los usuarios a la app de Facebook para iOS nativa, sino que verán la hoja de acciones para compartir de iOS.
El cuadro de diálogo de mensajes cambia a la app de Messenger para iOS nativa y le devuelve el control a tu app una vez que se realizó una publicación.
MessageDialog(content: content, delegate: delegate).show()
Nota: En estos momentos, iPad no admite el cuadro de diálogo de mensajes.
En iOS, se incluye una hoja nativa de acciones para compartir que permite compartir actualizaciones de estado, fotos, videos y enlaces en Facebook, y también permite especificar el público de la publicación y etiquetarla con un lugar. El SDK de Facebook permite el uso de este controlador nativo: esto será lo que verán los usuarios en la mayoría de los casos cuando llames al cuadro de diálogo de contenido compartido de Facebook.
El uso de esta hoja de acciones para compartir de iOS está sujeto a las Políticas para desarrolladores, incluida la sección 2.3, que establece que las apps no pueden completar previamente el contenido que se compartirá en el contexto de esta hoja. Por lo tanto, las apps no pueden completar previamente el campo "initialText" de la hoja con contenido que no haya escrito el usuario de la app.
Esta API también utiliza el mismo bloque de estilos que otros componentes del SDK de Facebook. Para mostrar el cuadro de diálogo de contenido compartido de iOS nativo, utiliza lo siguiente:
let dialog = ShareDialog( viewController: self, content: content, delegate: nil ) dialog.mode = .shareSheet dialog.show()
Ten en cuenta que se necesita el argumento viewController
a fin de que se muestre la hoja de acciones para compartir.
Puedes especificar un solo hashtag para que aparezca con una foto, un enlace o un video que compartes. Este hashtag también aparece en el cuadro de diálogo de contenido compartido, pero es posible eliminarlo antes de publicar.
A continuación, verás un ejemplo de cómo agregar un hashtag a un contenido compartido mediante enlaces.
let content = ShareLinkContent() guard let url = URL(string: "https://developers.facebook.com") else { return } content.contentURL = url content.hashtag = Hashtag("#MadeWithHackbook")
App Links te permite enlazar de vuelta a tu app desde las publicaciones de Facebook que se realizaron desde esta app.
Cuando las personas hagan clic en una publicación de Facebook realizada desde tu app, se abrirá la app y podrás, incluso, enlazar un contenido concreto dentro de ella.
Si utilizas el simulador para probar las funciones para compartir en tu app, aparecerán errores cuando intentes compartir videos o fotos. El motivo es que necesitas tener instalado Facebook para iOS, que es el que proporciona el cuadro de diálogo de contenido compartido. Esta app no es compatible con el simulador.
En el caso de los contenidos compartidos mediante enlaces, no es necesario tener instalado Facebook para iOS, por lo que es posible probarlos. Para probar otras situaciones, configura un dispositivo real de prueba que tenga instalado Facebook para iOS.