Compartir en iOS

Al integrar el inicio de sesión con Facebook, la opción para compartir en Facebook o Facebook Gaming, determinados eventos de la aplicación se registran y recopilan automáticamente para el Administrador de eventos, a menos que desactives el registro automático de eventos de la aplicación. Recomendamos que todos los desarrolladores de aplicaciones que usen el inicio de sesión con Facebook, la opción para compartir en Facebook o Facebook Gaming comprendan el funcionamiento de esta característica. Para obtener información más detallada sobre los datos que se recopilan y cómo desactivar el registro automático de eventos de la aplicación, consulta Registro automático de eventos de la aplicación.

Puedes encontrar más información sobre el SDK de Facebook para iOS aquí.

En esta guía se detalla cómo activar la función de compartir contenido en Facebook desde tu aplicación para iOS. Si alguien comparte contenido desde tu aplicación, dicho contenido aparece en su biografía y en los feeds de sus amigos.

Requisitos previos

Para poder añadir la función de compartir contenido a tu aplicación, debes hacer lo siguiente:

  • Añade el SDK de Facebook para iOS al entorno de desarrollo para móviles.
  • Añade el identificador de la aplicación, el nombre para mostrar y el motivo en lenguaje natural del acceso a las fotos al archivo .plist de tu aplicación.
  • Vincula el marco FBSDKShareKit.framework a tu proyecto.

La aplicación no debe rellenar previamente el contenido que se va a compartir. Esta práctica contradice la Política de la plataforma de Facebook. Consulta Políticas para desarrolladores.

Introducción al SDK para iOS

Modelado de contenido

Cada tipo de contenido tiene una interfaz que puedes usar para representarlo y que se ajusta a SharingContent. Después de modelar el contenido, añade en tu aplicación una interfaz para compartirlo que se ajuste a Sharing o usa la clase ShareDialog proporcionada.

Cuando se comparten enlaces de tu aplicación en Facebook, se incluye un elemento contentURL con el enlace correspondiente. Crea contenido para compartir con los enlaces mediante el modelo ShareLinkContent.

A continuación figura un ejemplo de activación del contenido compartido:

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: Si tu aplicación comparte enlaces con las tiendas de iTunes o Google Play, no se publica ninguna imagen ni descripción que especifiques en el contenido compartido. En su lugar, se publican algunos datos de la aplicación que se extraen de la tienda de aplicaciones directamente con el rastreador web. Es posible que no se incluyan imágenes. Para obtener una vista previa del contenido compartido con un enlace a iTunes o Google Play, introduce la URL en el depurador de contenido compartido.

Fotos

Las fotos de tu aplicación se pueden compartir 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 descargada la aplicación nativa de Facebook para iOS (versión 7.0 o posterior).

Crea contenido para compartir con las fotos mediante el modelo SharePhotoContent.

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
}

Vídeos

Los usuarios de tu aplicación pueden compartir videos en Facebook con el cuadro de diálogo de contenido compartido o mediante tu propia interfaz personalizada:

  • El tamaño de los vídeos debe ser inferior a 50 MB.
  • Las personas que vayan a compartir contenido deben tener descargado el cliente de Facebook para iOS (versión 26.0 o posterior).

Crea contenido para compartir con los vídeos mediante el modelo FBSDKShareVideoContent. Para ver una lista de todos los atributos, consulta la referencia del modelo 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)
    }
}

Elementos multimedia

Los usuarios de tu aplicación pueden compartir una combinación de fotos y vídeos en Facebook mediante el cuadro de diálogo de contenido compartido. Ten en cuenta lo siguiente:

  • Las personas que vayan a compartir contenido deben tener descargado el cliente de Facebook para iOS.
  • El tamaño de las fotos y los vídeos debe ser inferior a 12 MB y 50 MB, respectivamente.
  • A lo sumo, se puede compartir 1 vídeo más un máximo de 29 o 30 fotos.

Crea 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 contenido

Tras gestionar el contenido mediante la creación de un modelo, puedes activar el cuadro de diálogo de contenido compartido o el de mensajes.

Botones

En iOS, Facebook dispone de botones nativos para activar el contenido compartido.


Botón "Compartir"

El botón "Compartir" permite a las personas compartir contenido en su biografía de Facebook, en la de un amigo o en un grupo. El botón Compartir llama a un cuadro de diálogo de contenido compartido. Para añadir un botón "Compartir" a la vista, añade el siguiente fragmento de código:

var button = FBShareButton()
button.shareContent = content
// Add button to view

Botón Enviar

El botón Enviar permite a las personas enviar fotos, vídeos y enlaces de forma privada a sus amigos y contactos mediante la aplicación Messenger de Facebook. Dicho botón llama a un cuadro de diálogo de mensajes. Para añadir un botón "Enviar" a la vista, añade el siguiente fragmento de código:

var button = SendButton()
button.shareContent = content
// Add button to view

Si la aplicación de Messenger no está descargada, el botón "Enviar" aparecerá atenuado. Para comprobar si el botón "Enviar" se puede usar en el dispositivo actual, utiliza la propiedad isImplicitlyDisabled de SendButton:

Cuadro de diálogo de contenido compartido

Para usar las experiencias de compartir contenido integradas en Facebook, debes definir el contenido como en la sección anterior Modelar contenido 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:

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 aplicación tenía que comprobar si estaba descargada una aplicación de Facebook nativa para poder abrir el cuadro de diálogo de contenido compartido. Si la persona en cuestión no tenía descargada la aplicación, tenías que proporcionar tu propio código para llamar al cuadro de diálogo de reserva.

Ahora el SDK comprueba automáticamente si la aplicación nativa de Facebook está descargada. Si no lo está, el SDK cambia al navegador predeterminado del usuario y abre el cuadro de diálogo para publicar en el feed.

Si la aplicación nativa de Facebook está descargada, los usuarios ven la hoja para compartir contenido de iOS, en lugar de cambiar a la aplicación nativa de Facebook para iOS.

Cuadro de diálogo de mensajes

El cuadro de diálogo de mensajes cambia a la aplicación nativa de Messenger para iOS y devuelve el control a la aplicación una vez realizada la publicación.

MessageDialog(content: content, delegate: delegate).show()

Nota: Actualmente, el cuadro de diálogo de mensajes no es compatible con dispositivos iPad.

Integración con iOS

iOS incluye una hoja nativa para compartir contenido que permite publicar actualizaciones de estado, fotos, vídeos y enlaces en Facebook. Además, permite definir la audiencia de la publicación y etiquetar dicha publicación con una ubicación. El SDK de Facebook admite el uso de este controlador nativo. Esta será la experiencia que se verá en la mayoría de los casos al llamar al cuadro de diálogo de contenido compartido de Facebook.

El uso de la hoja para compartir contenido de iOS está sujeto a las Políticas para desarrolladores, incluida la sección 2.3, en la que se indica que las aplicaciones no pueden rellenar previamente contenido en el contexto de dicha hoja. Por lo tanto, las aplicaciones no pueden rellenar previamente el campo initialText de esta hoja con contenido que no haya introducido el usuario de la aplicación.

Esta API también usa el mismo bloque de estilos que otros componentes del SDK de Facebook. Para mostrar el cuadro de diálogo de contenido compartido nativo de iOS, usa el código siguiente:

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: nil
)
dialog.mode = .shareSheet
dialog.show()

Ten en cuenta que se requiere el argumento viewController a fin de que aparezca la hoja para compartir contenido.

Hashtags

Puedes especificar un solo hashtag para que aparezca con la foto, el enlace o el vídeo que compartas. Este hashtag también aparece en el cuadro de diálogo de contenido compartido, aunque existe la opción de eliminarlo antes de publicar.

A continuación, se muestra un ejemplo de cómo añadir un hashtag al contenido compartido con un enlace.

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 permite crear un enlace a tu aplicación desde las publicaciones de Facebook que se hayan realizado en ella.

Al hacer clic en una publicación de Facebook realizada desde tu aplicación, esta se abre e incluso puedes crear enlaces a contenido concreto dentro de ella.

Simulador de iOS y pruebas

Si usas el simulador para probar la función de compartir contenido en tu aplicación, se producirán errores al intentar compartir vídeos o fotos. Esto ocurre porque debes tener descargado Facebook para iOS, que proporciona el cuadro de diálogo de contenido compartido. Sin embargo, esta aplicación no es compatible con el simulador.

En el caso del contenido compartido con un enlace, no es necesario que Facebook para iOS esté descargado, de modo que este caso de prueba es posible. Para probar otras situaciones relacionadas con la función de compartir contenido, debes configurar un dispositivo de prueba real en el que Facebook para iOS esté descargado.