Como compartilhar no iOS

Depois que você integrar o Login do Facebook, o Compartilhamento do Facebook ou os Jogos do Facebook, alguns eventos do app serão automaticamente registrados e coletados para o Gerenciador de Eventos, a menos que você desabilite o registro automático. Recomendamos que todos os desenvolvedores de apps que usam o Login do Facebook, o Compartilhamento do Facebook ou os Jogos do Facebook entendam como esse recurso funciona. Para saber mais sobre as informações que são coletadas e sobre como desabilitar o registro automático de eventos, consulte Registro automático de eventos do app.

Veja mais informações sobre o SDK do Facebook para iOS aqui.

Este guia detalha como habilitar o compartilhamento do seu app do iOS no Facebook. Quando alguém compartilha algo do seu app, o conteúdo aparece na linha do tempo dessa pessoa e nos Feeds dos amigos dela.

Pré-requisitos

Antes de adicionar compartilhamento ao seu app, você precisa fazer o seguinte:

  • Adicionar o SDK do Facebook para iOS ao seu ambiente de desenvolvimento móvel.
  • Configurar e vincular seu ID do app do Facebook.
  • Adicionar o ID do app, o nome de exibição e o motivo legível para o acesso às fotos do arquivo .plist do app.
  • Vincular a FBSDKShareKit.framework ao projeto.

Seu app não deve preencher o conteúdo a ser compartilhado automaticamente. Isso viola a Política da Plataforma do Facebook. Veja as Políticas do Desenvolvedor.

Introdução ao SDK do iOS

Conteúdo de modelagem

Cada tipo de conteúdo tem uma interface que você pode usar para representá-lo e que está de acordo com o SharingContent. Depois de modelar o conteúdo, adicione uma interface de compartilhamento ao app, em conformidade com Sharing, ou use a classe ShareDialog fornecida.

Quando as pessoas compartilham links do seu app no Facebook, uma contentURL é incluída com o link compartilhado. Crie seu conteúdo de compartilhamento de links com o modelo ShareLinkContent.

Veja este exemplo de como acionar o compartilhamento:

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

Observação: se o app compartilhar links do iTunes ou da Google Play Store, não publicaremos imagens ou descrições que foram especificadas no compartilhamento. Em vez disso, publicaremos algumas informações do app extraídas diretamente da App Store com o Webcrawler. Isso pode não incluir imagens. Para ver uma prévia do compartilhamento de link do iTunes ou do Google Play, insira a URL no Depurador de Compartilhamento.

Fotos

As pessoas podem compartilhar fotos do seu app no Facebook com o diálogo de compartilhamento ou com uma interface personalizada:

  • As fotos devem ter menos de 12 MB
  • As pessoas precisam ter instalado o app do Facebook para iOS nativo, versão 7.0 ou posterior

Crie seu conteúdo de compartilhamento de fotos com o 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

As pessoas que usam seu app podem compartilhar vídeos no Facebook com o diálogo de compartilhamento ou com sua própria interface personalizada:

  • Os vídeos devem ter menos de 50 MB.
  • As pessoas que querem compartilhar precisam ter instalado o app do Facebook para iOS nativo, versão 26.0 ou posterior.

Crie seu compartilhamento de conteúdo de vídeos com o modelo FBSDKShareVideoContent. Para obter uma lista de todos os atributos, consulte a referência 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)
    }
}

Multimídia

As pessoas que usam o app podem compartilhar uma combinação de fotos e vídeos no Facebook com o diálogo de compartilhamento. Observe o seguinte:

  • As pessoas que querem fazer o compartilhamento precisam ter instalado o app do Facebook para iOS.
  • As fotos devem ter menos de 12 MB, e os vídeos devem ter menos de 50 MB.
  • As pessoas podem compartilhar no máximo um vídeo e até 29 ou 30 fotos.

Crie seu conteúdo de compartilhamento multimídia com o modelo ShareMediaContent.

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

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

Métodos de compartilhamento

Depois de tratar do conteúdo na criação de um modelo, você pode acionar os diálogos de mensagens ou compartilhamento.

Botões

No iOS, o Facebook tem botões nativos para acionar compartilhamentos.


Botão Compartilhar

Com o botão Compartilhar, as pessoas podem compartilhar conteúdo na própria linha do tempo do Facebook, na linha do tempo de um amigo ou em um grupo. Esse botão chama um diálogo de compartilhamento e pode ser adicionado à sua visualização, basta incluir o seguinte trecho de código na visualização:

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

Botão Enviar

Com o botão Enviar, as pessoas podem enviar fotos, vídeos e links de forma privada aos amigos e contatos usando o app Facebook Messenger. Esse botão chama um diálogo de mensagens. e pode ser adicionado ao app, basta incluir o seguinte trecho de código na sua visualização:

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

Se o app Messenger não estiver instalado, o botão Enviar ficará esmaecido. Para verificar se o botão Enviar pode ser usado no dispositivo atual, use a propriedade de SendButtonisImplicitlyDisabled:

Diálogo de compartilhamento

Para usar as experiências de compartilhamento internas do Facebook, defina seu conteúdo de acordo com a seção Conteúdo de modelagem acima e chame o diálogo de compartilhamento. Por exemplo, para compartilhar um link usando o diálogo de compartilhamento:

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

Em versões anteriores do SDK para iOS, o app precisava verificar se havia um app Facebook nativo instalado antes de abrir o diálogo de compartilhamento. Se a pessoa não tivesse o app instalado, você tinha que fornecer seu próprio código para chamar uma caixa de diálogo de fallback.

Agora, o SDK verifica se o app Facebook nativo está instalado automaticamente. Se não estiver, o SDK direciona as pessoas para o navegador padrão e abre um diálogo do feed.

Se o app Facebook nativo estiver instalado, as pessoas verão a folha de compartilhamento do iOS em vez de serem direcionados para o app Facebook para iOS nativo.

Diálogo de mensagens

O diálogo de mensagens muda para o app nativo Messenger para iOS e devolve o controle ao seu app depois da publicação.

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

Observação: no momento, o diálogo de mensagens não é compatível com iPads.

Integração com o iOS

O iOS inclui uma folha de compartilhamento nativa que permite que as pessoas publiquem atualizações de status, fotos, vídeos e links no Facebook. Com esse recurso, também é possível configurar o público e marcar a localização de uma publicação. O SDK do Facebook é compatível com o uso desse controle nativo. Na maior parte dos casos, essa é a experiência que as pessoas veem ao chamar o diálogo de compartilhamento do Facebook.

O uso da folha de compartilhamento do iOS está sujeito às Políticas do Desenvolvedor, incluindo a seção 2.3, que prevê que os apps não podem fazer o preenchimento automático no contexto da folha de compartilhamento. Isso significa que os apps talvez não preencham o campo initialText da folha de compartilhamento com conteúdo que não foi inserido pelo usuário.

Essa API também usa o mesmo bloco de estilo de outras partes do SDK do Facebook. Para mostrar o diálogo de compartilhamento nativo do iOS, use:

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

Observe que o argumento viewController é obrigatório para que a folha de compartilhamento apareça.

Hashtags

Você pode especificar uma única hashtag para ser exibida com um vídeo, foto ou link compartilhado. Essa hashtag também é exibida no diálogo de compartilhamento, e as pessoas têm a oportunidade de removê-la antes de publicar.

Veja a seguir um exemplo de como adicionar uma hashtag ao compartilhamento de um link.

let content = ShareLinkContent()
guard let url = URL(string: "https://developers.facebook.com") else { return }

content.contentURL = url
content.hashtag = Hashtag("#MadeWithHackbook")

Tópicos avançados

Com o App Links, você pode ter um link de volta para seu app em publicações feitas por meio dele no Facebook.

Quando as pessoas clicam em uma publicação do Facebook feita do seu app, ele é aberto e você pode até vincular a publicação a um conteúdo específico dentro do app.

Simulador de iOS e teste

Caso esteja usando o Simulador para testar o compartilhamento no seu app, você verá erros ao tentar compartilhar vídeos ou fotos. Isso ocorre porque você precisa instalar o Facebook para iOS para ter o diálogo de compartilhamento. Essa ação não é compatível com o Simulador.

Caso queira compartilhar links, você não precisa instalar o Facebook para iOS e, portanto, pode fazer o teste. Para testar outros cenários de compartilhamento, configure um dispositivo de teste real com o Facebook para iOS instalado.