Como compartilhar no iOS

Este guia detalha como ativar o compartilhamento de seu aplicativo do iOS no Facebook. Quando alguém compartilha algo usando o 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 o seu aplicativo no Facebook Messenger com a Plataforma Messenger Expression ou da caixa de 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 ao seu aplicativo, você precisa:

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 ao seu aplicativo que esteja de acordo com o <FBSDKSharing>, como o FBSDKShareDialog.

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

A partir de 18 de abril de 2017, os parâmetros a seguir não serão suportado pela Graph API versão 2.9 e posterior. Para a versão 2.8 e inferiores, os parâmetros continuarão funcionando até 17 de julho de 2017.

  • contentTitle – representa o título do conteúdo no link
  • imageURL – a URL da imagem em miniatura que aparece na publicação
  • contentDescription – do conteúdo, normalmente de 2 a 4 frases

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

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

Observação: 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 compartilhamento de conteúdo 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 uma interface personalizada:

  • Os vídeos devem ter menos de 12 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
{
  NSURL *videoURL = [info objectForKey:UIImagePickerControllerReferenceURL];

  FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
  video.videoURL = videoURL;
  FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
  content.video = video;
  ...
}

A URL de vídeo videoURL tem que ser uma URL de ativo. Você pode obter um exemplo de URL de ativo em UIImagePickerController.

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 aplicativo do Facebook para iOS nativo, versão 52.0 ou posterior.
  • Cada foto e vídeo deve ter menos de 12 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 disparar a caixa de diálogo de mensagens, o diálogo de compartilhamento ou sua própria interface personalizada para compartilhá-lo.

Botões

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


Botão Curtir

O botão Curtir é uma maneira rápida de compartilhar conteúdo com os amigos. Com um único toque no botão Curtir, a pessoa "curte" conteúdo no seu aplicativo e o compartilha no Facebook. Para adicionar um botão Curtir ao seu aplicativo, adicione o seguinte trecho de código à sua visualização:

FBSDKLikeControl *button = [[FBSDKLikeControl alloc] init];
button.objectID = @"https://www.facebook.com/FacebookDevelopers";
[self.view addSubview:button];

Botão Compartilhar

O botão Compartilhar permite que as pessoas compartilhem conteúdo na Linha do Tempo 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 ao seu aplicativo, adicione 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 uma caixa de diálogo de mensagens. Para adicionar um botão Enviar ao seu aplicativo, adicione o seguinte trecho de código à 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 será ocultado. 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 envia as pessoas para seus navegadores padrão e abre uma caixa de diálogo Feed. Se alguém quiser compartilhar uma publicação de Open Graph, o SDK abre 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 ao 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

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

[FBSDKMessageDialog showWithContent:content delegate:nil];

Observação: atualmente, a caixa de diálogo de mensagens não tem suporte em iPads.

Integração com iOS

O iOS 6 e suas versões posteriores incluem uma folha de compartilhamento nativa que permite às pessoas publicar atualizações de status, fotos, vídeos e links no Facebook e incluem suporte para definição de quem pode ver a publicação e de marcação de local. 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 não podem 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 para o 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 no 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 do seu aplicativo, ele é aberto e você pode até vincular a publicação a um conteúdo específico dentro do aplicativo.

Interface personalizada

Para usar sua própria interface para o compartilhamento, é preciso:

Veja uma chamada à Graph API para publicar um link no Facebook:

[FBSDKShareAPI shareWithContent:content delegate:nil];

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 Loja de aplicativos de seu aplicativo.

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

Crie seu compartilhamento de conteúdo 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.