Partage sur iOS

Ce guide explique en détail comment activer le partage depuis votre app iOS sur Facebook. Lorsqu’une personne partage du contenu depuis votre app, il apparaît sur son journal et dans le fil d’actualité de ses amis.

Il est également possible de partager du contenu depuis votre app sur Facebook Messenger avec la plate-forme d’expression Messenger ou depuis la boîte de dialogue Contacter de la section Partage dans le SDK pour iOS.

SDK Messenger pour iOSBoîte de dialogue Contacter

Conditions requises

Avant d’ajouter le partage à votre app, vous devez :

  • ajouter le SDK Facebook pour iOS à votre environnement de développement mobile ;
  • configurer et associer votre ID d’app Facebook ;
  • ajouter votre ID d’app, le nom d’affichage et la raison, lisible par l’homme, de l’accès aux photos du fichier .plist de votre application ;
  • associer le FBSDKShareKit.framework à votre projet.

Votre app ne doit pas préremplir le contenu à partager. Cela est incompatible avec les règles de la plate-forme Facebook : consultez le Règlement de la plate-forme 2.3.

Démarrer avec le SDK pour iOS

Modélisation du contenu

Les versions 4.0 et ultérieures des SDK Facebook disposent de nouveaux modèles de partage de contenu. Chaque type de contenu possède une interface conforme à <FBSDKSharingContent> que vous pouvez utiliser pour le représenter. Après avoir modélisé le contenu, ajoutez une interface de partage à votre app, conforme à <FBSDKSharing> comme FBSDKShareDialog.

Lorsque des personnes partagent des liens depuis votre app sur Facebook, elles incluent un attribut contentURL avec le lien à partager. Créez votre contenu à partager pour les liens avec le modèle FBSDKShareLinkContent. Pour obtenir une liste complète des attributs, consultez la référence FBSDKShareLinkContent.

Depuis le 18 avril 2017, les paramètres suivants ne sont plus pris en charge par les versions 2.9 et supérieures de l’API Graph. Pour les versions 2.8 et inférieures, les paramètres continueront de fonctionner jusqu’au 17 juillet 2017.

  • contentTitle : représente le titre du contenu du lien.
  • imageURL : l’URL d’une image miniature qui apparaît dans la publication.
  • contentDescription : description du contenu, généralement deux à quatre phrases.

Voici un exemple pour déclencher le partage :

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

Remarque : si votre app partage des liens vers les boutiques iTunes ou Google Play, nous ne publions pas les images ou les descriptions que vous indiquez dans le partage. Au lieu de cela, nous publions certaines informations de l’app que nous récupérons directement sur la boutique d’applications avec le Webcrawler. Cela ne peut pas inclure d’images. Pour prévisualiser un partage de lien sur iTunes ou Google Play, saisissez votre URL dans le Débogueur de partage.

Photos

Les personnes qui utilisent votre app peuvent partager des photos sur Facebook à l’aide de la boîte de dialogue Partager ou en utilisant une interface personnalisée :

  • La taille maximale des photos est de 12 Mo.
  • L’installation de l’app Facebook native pour iOS, version 7.0 ou supérieure, est requise.

Créez votre contenu à partager pour les photos avec le modèle FBSDKSharePhotoContent. Pour obtenir une liste complète des attributs, consultez la référence 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];
  ...
}

Vidéos

Les personnes qui utilisent votre app peuvent partager des vidéos sur Facebook à l’aide de la boîte de dialogue Partager ou en utilisant votre propre interface personnalisée :

  • La taille maximale des vidéos est de 12 Mo.
  • Le partage nécessite l’installation du client Facebook pour iOS, version 26.0 ou supérieure.

Créez votre contenu à partager pour les vidéos avec le modèle FBSDKShareVideoContent. Pour obtenir une liste complète des attributs, consultez la référence 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;
  ...
}

L’URL de la vidéo videoURL doit être une URL de ressource. Par exemple, vous pouvez obtenir une URL de ressource vidéo depuis UIImagePickerController.

Multimédia

Les personnes qui utilisent votre app peuvent partager une combinaison de photos et de vidéos sur Facebook au moyen de la boîte de dialogue Partager. Notez les conditions suivantes :

  • Les personnes doivent disposer d’iOS version 7.0 ou ultérieure.
  • Le partage nécessite l’installation du client Facebook pour iOS, version 52.0 ou supérieure.
  • La taille maximale de chaque photo et vidéo est de 12 Mo.
  • Les personnes peuvent partager une vidéo au maximum et jusqu’à 29 ou 30 photos.

Utilisez le modèle FBSDKShareMediaContent pour créer le contenu multimédia à partager. Pour obtenir une liste complète des attributs, consultez la référence FBSDKShareMediaContent.

FBSDKSharePhoto *photo = [FBSDKSharePhoto photoWith...
FBSDKShareVideo *video = [FBSDKShareVideo videoWith...
FBSDKShareMediaContent *content = [FBSDKShareMediaContent new];
content.media = @[photo, video];
}

Méthodes de partage

Après avoir géré le contenu en créant un modèle, vous pouvez déclencher les boîtes de dialogue Partager ou Contacter, ou utiliser votre propre interface personnalisée pour le partage.

Boutons

Sur iOS, Facebook dispose de boutons natifs permettant de déclencher les partages.


Bouton J’aime

Le bouton J’aime est un moyen rapide de partager du contenu avec ses amis. Appuyer sur le bouton J’aime ajoute la mention J’aime à certains éléments de contenu de votre app, et les partage sur Facebook. Pour ajouter un bouton J’aime à votre affichage, ajoutez-y l’extrait de code suivant :

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

Bouton Partager

Avec le bouton Partager, les personnes peuvent partager du contenu dans leur journal Facebook, dans le journal d’un ami ou dans un groupe. Le bouton Partager appelle la boîte de dialogue Partager. Pour ajouter un bouton Partager à votre affichage, ajoutez-y l’extrait de code suivant :

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

Bouton Envoyer

Le bouton Envoyer permet aux personnes d’envoyer des photos, des vidéos et des liens de manière privée à leurs amis et à leurs contacts à l’aide de Facebook Messenger. Le bouton Envoyer appelle la boîte de dialogue Contacter. Pour ajouter un bouton Envoyer à votre affichage, ajoutez-y l’extrait de code suivant :

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

Si l’application Messenger n’est pas installée, le bouton Envoyer est masqué. Assurez-vous que la disposition de votre app convient lorsque le bouton est masqué. Pour vérifier si le bouton Envoyer peut être affiché sur l’appareil actuel, utilisez la propriété FBSDKSendButtonisHidden :

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

Boîte de dialogue Partager

Pour utiliser les expériences de partage intégrées à Facebook, vous devez définir votre contenu comme indiqué dans la section Modélisation du contenu ci-dessus, puis appeler la boîte de dialogue Partager. Par exemple, pour partager un lien à l’aide de la boîte de dialogue Partager :

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

Dans les anciennes versions du SDK pour iOS, votre app devait vérifier si une app Facebook native était installée avant de pouvoir ouvrir la boîte de dialogue Partager. Si la personne n’avait pas installé l’app, vous deviez fournir votre propre code pour appeler une autre boîte de dialogue.

Désormais, le SDK contrôle automatiquement la présence de l’app Facebook native. Si elle n’a pas été installée, le SDK renvoie les personnes à leur navigateur par défaut et ouvre la boîte de dialogue Fil. Si quelqu’un veut partager une actualité Open Graph, le SDK ouvre la boîte de dialogue Partager pour le web.

Si l’app Facebook native est installée, les versions 4.0 à 4.4 du SDK basculent vers l’app Facebook native pour iOS, puis votre app reprend le contrôle une fois l’actualité publiée. Si vous utilisez la version 4.5 ou ultérieure du SDK, les personnes voient la feuille de partage iOS plutôt que d’être renvoyées à l’app Facebook native pour iOS, à moins que le partage soit une actualité Open Graph.

Boîte de dialogue Contacter

La boîte de dialogue Contacter bascule vers l’app Messenger native pour iOS, puis votre app reprend le contrôle une fois l’actualité publiée.

[FBSDKMessageDialog showWithContent:content delegate:nil];

Remarque : la boîte de dialogue Contacter n’est actuellement pas prise en charge sur les iPad.

Intégration d’iOS

Les versions iOS 6 et ultérieures incluent une feuille de partage native qui permet de publier des mises à jour de statut, des photos, des vidéos et des liens sur Facebook. Elles prennent également en charge la définition de l’audience ciblée et l’identification d’un lieu dans la publication. Vous ne pouvez pas partager d’actualités Open Graph avec la feuille de partage. Le SDK Facebook prend en charge l’utilisation de ce contrôleur natif ; à partir de la version 4.5 du SDK Facebook, cette expérience représente ce que vous voyez dans la plupart des cas lorsque vous appelez la boîte de dialogue Partager Facebook.

L’utilisation de cette feuille de partage iOS est soumise au Règlement de la plate-forme Facebook, notamment de la section 2.3 qui indique que les applications ne doivent pas préremplir le contexte de la feuille de partage. Cela signifie que les applications ne doivent pas préremplir le champ initialText de la feuille de partage en y renseignant du contenu qui n’a pas été saisi par la personne qui utilise l’application.

Cette API utilise également le même bloc de style que d’autres parties du SDK Facebook. Pour afficher la boîte de dialogue Partager iOS native, utilisez :

// 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];

Notez que .fromViewController est nécessaire pour afficher la feuille de partage.

Fonctionnalités supplémentaires

Lorsque vous utilisez la boîte de dialogue Partager de Facebook, vous disposez d’options supplémentaires, qui ne sont pas disponibles lorsque vous partagez du contenu à l’aide de l’API.

Hashtags

Vous pouvez faire apparaître un hashtag avec une photo, une vidéo ou un lien partagé. Ce hashtag apparaît également dans la boîte de dialogue Partager et les personnes ont la possibilité de l’effacer avant de publier.

Voici un exemple d’ajout d’un hashtag lors du partage d’un lien.

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

Partage de citations

Vous pouvez autoriser les personnes à surligner du texte pour le faire apparaître comme citation avec un lien partagé. Vous pouvez également prédéfinir une citation, par exemple une citation isolée dans un article, afin qu’elle apparaisse avec le lien partagé. Dans ces deux cas, la citation apparaît dans un champ qui lui est propre, séparé des commentaires de l’utilisateur.

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.";

Rubriques avancées

Avec App Links, vous pouvez créer un lien vers votre app depuis des actualités Facebook publiées à partir de votre app.

Lorsque des personnes cliquent sur une actualité Facebook publiée à partir de votre app, cette dernière s’ouvre et vous pouvez même ajouter un lien vers un contenu particulier de l’app.

Interface personnalisée

Pour pouvoir partager du contenu en utilisant votre propre interface, vous devez :

  • construire une interface personnalisée qui envoie des publications vers le point de terminaison de l’API Graph /me/feed ;
  • ajouter Facebook Login à votre application ;

Voici l’appel de l’API Graph pour publier un lien vers Facebook :

[FBSDKShareAPI shareWithContent:content delegate:nil];

Partage d’actualités Open Graph

Grâce aux actualités Open Graph, des personnes peuvent partager du contenu riche et structuré par le biais d’une API fortement typée définie par les actions et les objets Open Graph.

Les actualités partagées renvoient à votre app ou à la page de la boutique d’applications pour votre app.

Pour en savoir plus sur l’ajout d’actualités personnalisées à votre app, consultez la section Actualités Open Graph sur iOS.

Créez votre contenu à partager pour les actions Open Graph avec le modèle FBSDKShareOpenGraphContent. Pour obtenir une liste complète des attributs, consultez la référence 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";

iOS Simulator et tests

Si vous utilisez Simulator pour tester les partages dans votre application, des erreurs s’affichent si vous essayez de partager des vidéos, des photos ou des actions Open Graph. En effet, vous devez avoir installé Facebook pour iOS qui fournit la boîte de dialogue Partager. Nous ne prenons pas en charge cette fonctionnalité pour Simulator.

Dans le cas des partages de liens, vous n’avez pas besoin d’installer Facebook pour iOS pour pouvoir effectuer des tests. Pour tester d’autres scénarios de partage, configurez un appareil de test réel sur lequel vous installez Facebook pour iOS.