Como compartilhar no iOS

Este guia detalha como ativar o compartilhamento de seu aplicativo do iOS no Facebook. Quando alguém compartilha algo usando seu aplicativo, o conteúdo aparece na Linha do Tempo dessa pessoa e no Feed de Notícias dos amigos dela.

As pessoas também podem compartilhar conteúdo usando seu aplicativo no Facebook Messenger com a Plataforma Messenger Expression ou do diálogo de mensagens de compartilhamento no SDK do iOS.

SDK do Messenger para iOSCaixa de diálogo de mensagens

Pré-requisitos

Antes de adicionar compartilhamento a seu aplicativo, você precisa:

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

Seu aplicativo não deve preencher o conteúdo a ser compartilhado automaticamente. Isso viola a Política da Plataforma do Facebook. Veja Política da Plataforma do Facebook, seção 2.3.

Introdução ao SDK do iOS

Conteúdo de modelagem

As versões 4.0 e posteriores dos SDKs do Facebook têm novos modelos para compartilhar conteúdo. Cada tipo de conteúdo tem uma interface que você pode usar para representá-lo e que está de acordo com o <FBSDKSharingContent>. Depois de modelar o conteúdo, adicione uma interface de compartilhamento a seu aplicativo que esteja de acordo com o <FBSDKSharing>, como o FBSDKShareDialog.

Quando as pessoas compartilham links de seu aplicativo no Facebook, ele inclui um contentURL com o link que será compartilhado. Crie seu conteúdo de compartilhamento de links com o modelo FBSDKShareLinkContent. Para obter uma lista de todos os atributos, consulte a referência FBSDKShareLinkContent.

Veja aqui um exemplo de como você pode acionar o compartilhamento:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

Nota: se o aplicativo compartilha links para o iTunes ou para o Google Play, não publicamos imagens ou descrições especificadas no compartilhamento. Em vez disso, publicaremos algumas informações do aplicativo extraídas diretamente da App Store com o Webcrawler. Isso pode não incluir imagens. Para visualizar um compartilhamento de link para o iTunes ou para o Google Play, insira a URL no Depurador de compartilhamento.

Fotos

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

  • As fotos devem ter menos de 12 MB
  • Os usuários precisam ter instalado o aplicativo do Facebook para iOS nativo, versão 7.0 ou posterior

Crie seu conteúdo de compartilhamento de fotos com o modelo FBSDKSharePhotoContent. Para obter uma lista de todos os atributos, consulte a referência FBSDKSharePhotoContent.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  UIImage *image = info[UIImagePickerControllerOriginalImage];

  FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
  photo.image = image;
  photo.userGenerated = YES;
  FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
  content.photos = @[photo];
  ...
}

Vídeos

As pessoas que usam seu aplicativo 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.
  • Os usuários que querem compartilhar precisam ter instalado o aplicativo 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.

 - (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
  if (@available(iOS 11, *)) {
    video.videoAsset = [info objectForKey:UIImagePickerControllerPHAsset];
  } else {
    video.videoURL = [info objectForKey:UIImagePickerControllerReferenceURL];
  }
  FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
  content.video = video;
  ...
}

Multimídia

As pessoas que utilizam o seu aplicativo podem compartilhar uma combinação de fotos e vídeos no Facebook usando o diálogo de compartilhamento. Observe o seguinte:

  • As pessoas precisam ter a versão 7.0 ou superior do iOS.
  • Os usuários que querem compartilhar precisam ter instalado o cliente do Facebook para iOS, versão 52.0 ou posterior.
  • 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 de multimídia com o modelo FBSDKShareMediaContent. Para obter uma lista de todos os atributos, consulte a referência FBSDKShareMediaContent.

FBSDKSharePhoto *photo = [FBSDKSharePhoto photoWith...
FBSDKShareVideo *video = [FBSDKShareVideo videoWith...
FBSDKShareMediaContent *content = [FBSDKShareMediaContent new];
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

O botão Compartilhar permite que as pessoas compartilhem conteúdo na linha do tempo do Facebook delas, na linha do tempo de um amigo ou em um grupo. O botão Compartilhar chama um diálogo de compartilhamento. Para adicionar um botão Compartilhar a seu aplicativo, acrescente o seguinte trecho de código à sua visualização:

FBSDKShareButton *button = [[FBSDKShareButton alloc] init];
button.shareContent = content;  
[self.view addSubview:button];

Botão Enviar

O botão Enviar permite que as pessoas enviem fotos, vídeos e links de forma privada aos amigos e contatos usando o Facebook Messenger. O botão Enviar chama um diálogo de mensagens. Para adicionar um botão Enviar a seu aplicativo, adicione o seguinte trecho de código a sua visualização:

FBSDKSendButton *button = [[FBSDKSendButton alloc] init];
button.shareContent = content; 
[self.view addSubview:button];

Se o aplicativo Messenger não estiver instalado, o botão Enviar ficará oculto. Verifique se o layout do aplicativo é adequado, caso este botão esteja oculto. Para verificar se o botão Enviar pode ser exibido no dispositivo atual, use a propriedade FBSDKSendButtonisHidden:

if (button.isHidden) {
  NSLog(@"Is hidden");
} else {
  [self.view addSubview:button];
}

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 com o diálogo de compartilhamento:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"http://developers.facebook.com"];
[FBSDKShareDialog showFromViewController:self
                              withContent:content
                                 delegate:nil];

Em versões anteriores do SDK para iOS, seu aplicativo tinha que verificar se havia uma versão do aplicativo do Facebook nativa instalada antes de poder abrir o diálogo de compartilhamento. Se a pessoa não tivesse o aplicativo 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 aplicativo do Facebook nativo está instalado automaticamente. Se não estiver, o SDK direciona as pessoas para seus navegadores padrão e abre um diálogo do Feed. Se alguém quiser compartilhar uma publicação de Open Graph, o SDK abrirá um diálogo de compartilhamento Web.

Se o aplicativo do Facebook nativo estiver instalado, as versões 4.0 a 4.4 do SDK mudarão para o aplicativo do Facebook para iOS nativo e devolverão o controle a seu aplicativo depois da publicação. Se você estiver usando a versão 4.5 ou posterior do SDK, as pessoas verão a Share Sheet do iOS em vez de serem enviadas para o aplicativo do Facebook para iOS nativo, a menos que o compartilhamento seja uma publicação de Open Graph.

Caixa de diálogo de mensagens

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

[FBSDKMessageDialog showWithContent:content delegate:nil];

Nota: Atualmente, o diálogo de mensagens não tem suporte em iPads.

Integração com iOS

O iOS inclui uma folha de compartilhamento nativa que permite às pessoas publicar atualizações de status, fotos, vídeos e links no Facebook, além de contar com suporte para definição do público que poderá ver a publicação e marcação desta com uma localização. Você não pode compartilhar Publicações de Open Graph com a folha de compartilhamento. O SDK do Facebook dá suporte ao uso desse controlador nativo desde a versão 4.5 do SDK do Facebook. Essa experiência é a que as pessoas terão na maioria das vezes ao chamar o diálogo de compartilhamento do Facebook.

O uso da folha de compartilhamento do iOS está sujeito à Política da Plataforma do Facebook, inclusive à seção 2.3, que prevê que os aplicativos não podem fazer o preenchimento automático no contexto da folha de compartilhamento. Isso significa que os aplicativos podem não preencher o campo initialText da folha de compartilhamento com conteúdo que não foi inserido pelo usuário do aplicativo.

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:

// Example content. Replace with content from your app.
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.content = content;
dialog.mode = FBSDKShareDialogModeShareSheet;
[dialog show];

Observe que .fromViewController é obrigatório para que a folha de compartilhamento apareça.

Recursos adicionais

Ao usar o diálogo de compartilhamento do Facebook, você tem opções adicionais que não estão disponíveis ao compartilhar usando a API.

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.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];
content.hashtag = [FBSDKHashtag hashtagWithString:@"#MadeWithHackbook"];

Compartilhamento de citações

Você pode permitir que as pessoas destaquem um texto para que ele seja exibido como uma citação com um link compartilhado. Como alternativa, você pode predefinir uma citação, por exemplo, uma citação em um artigo, para que ela seja exibida com o link compartilhado. Em ambos os casos, a citação é exibida em seu próprio campo, separada dos comentários de usuários.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [@"https://developers.facebook.com/products/sharing"];
content.quote = @"Learn quick and simple ways for people to share content from your app or website to Facebook.";

Tópicos avançados

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

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

Como compartilhar Publicações de Open Graph

Com Publicações de Open Graph, as pessoas podem compartilhar conteúdo avançado e estruturado por uma API fortemente tipada definida por ações e objetos de Open Graph.

As publicações compartilhadas voltam para seu aplicativo ou para a página da App Store de seu aplicativo.

Para saber mais sobre como adicionar publicações personalizadas a seu aplicativo, veja Publicações de Open Graph no iOS.

Crie seu conteúdo de compartilhamento para ações de Open Graph com o modelo FBSDKShareOpenGraphContent. Para obter uma lista de todos os atributos, consulte a referência FBSDKShareOpenGraphContent.

NSDictionary *properties = @{
  @"og:type": @"fitness.course",
  @"og:title": @"Sample Course",
  @"og:description": @"This is a sample course.",
  @"fitness:duration:value": @100,
  @"fitness:duration:units": @"s",
  @"fitness:distance:value": @12,
  @"fitness:distance:units": @"km",
  @"fitness:speed:value": @5,
  @"fitness:speed:units": @"m/s",
};
FBSDKShareOpenGraphObject *object = [FBSDKShareOpenGraphObject objectWithProperties:properties];
FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init];
action.actionType = @"fitness.runs";
[action setObject:object forKey:@"fitness:course"];
FBSDKShareOpenGraphContent *content = [[FBSDKShareOpenGraphContent alloc] init];
content.action = action;
content.previewPropertyName = @"fitness:course";

Simulador de iOS e teste

Se você está usando o Simulador para testar o compartilhamento em seu aplicativo, verá erros se tentar compartilhar vídeos, fotos ou ações de Open Graph. Isso ocorre porque você precisa instalar o Facebook para iOS para ter o diálogo de compartilhamento. Não damos suporte a esse 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.