Compartir en iOS

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.

Requisitos previos

Para poder agregar la función de compartir a tu app, tienes que hacer lo siguiente:

  • Agrega el SDK de Facebook para iOS a tu entorno de desarrollo para celulares
  • Configura y enlaza el identificador de la app de Facebook.
  • Agrega el identificador de la app, el nombre para mostrar y un motivo legible por el que el archivo .plist de la app pueda acceder a las fotos.
  • Enlaza el elemento 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 iOS

Modelar el contenido

Cada 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.

Fotos

Los usuarios de tu app pueden compartir fotos en Facebook con el cuadro de diálogo de contenido compartido o mediante una interfaz personalizada:

  • El tamaño de las fotos debe ser inferior a 12 MB.
  • Es necesario tener instalada la app de Facebook nativa para iOS (versión 7.0 o posterior).

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
}

Videos

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.

  • El tamaño de los videos debe ser inferior a 50 MB.
  • Es necesario tener instalado el cliente de Facebook para iOS (versión 26.0 o posterior).

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)
    }
}

Contenido multimedia

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:

  • Es necesario tener instalado el cliente de Facebook para iOS.
  • El tamaño de las fotos debe ser inferior a 12 MB, y el de los videos debe ser inferior a 50 MB.
  • Las personas pueden compartir un video como máximo y hasta 29 o 30 fotos.

Crea tu contenido multimedia para compartir con el modelo ShareMediaContent.

let photo = SharePhoto(...)
let video = ShareVideo(...)

var content = ShareMediaContent()
content.media = [photo, video]

Métodos para compartir

Una vez que crees un modelo para administrar tu contenido, puedes desencadenar los cuadros de diálogo de contenido compartido o de mensajes.

Botones

Facebook ofrece botones nativos para desencadenar la función de compartir en iOS.


Botón "Compartir"

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

Botón "Enviar"

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 SendButtonisImplicitlyDisabled:

Cuadro de diálogo de contenido compartido

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.

Cuadro de diálogo de mensajes

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.

Integración con iOS

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.

Hashtags

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")

Temas avanzados

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.

Simulador y pruebas de iOS

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.