Partage sur Android

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

Il est également possible de partager du contenu depuis votre app sur Facebook Messenger.

Conditions requises

Avant de pouvoir partager sur Facebook depuis votre app, vous devez créer un lien vers ou télécharger le SDK Facebook Sharing pour Android.

Le SDK Sharing pour Android est un composant du SDK Facebook pour Android. Pour utiliser le SDK Facebook Sharing dans votre projet, faites-en une dépendance dans Maven ou téléchargez-le. Choisissez la méthode que vous préférez avec le bouton suivant.

Associer le SDK avec Maven

  1. Dans votre projet, ouvrez your_app | Gradle Scripts | build.gradle (Project) et ajoutez le référentiel suivant à la section buildscript { repositories {}} pour télécharger le SDK à partir du référentiel Maven Central :
    mavenCentral() 
  2. Dans votre projet, ouvrez your_app | Gradle Scripts | build.gradle (Module: app) et ajoutez le code de compilation suivant à la section dependencies{} pour compiler la version la plus récente du SDK :
    compile 'com.facebook.android:facebook-share:[4,5)'
  3. Créez votre projet.

Télécharger le SDK

Pour télécharger le SDK, cliquez sur le bouton suivant.

Télécharger le SDK

Lorsque vous utilisez le SDK Facebook Sharing, les évènements dans votre app sont automatiquement consignés et collectés pour Facebook Analytics, à moins de désactiver la consignation automatique des évènements. Pour en savoir plus sur les informations collectées et sur la façon de désactiver la consignation automatique des évènements, consultez la section Consignation automatique des App Events.

Autres conditions requises

Vous devez, par ailleurs, effectuer ce qui suit :

Pour en savoir plus sur ces exigences, consultez la section Android : démarrer.

Vous devez également configurer un fournisseur ContentProvider dans votre fichier AndroidManifest.xml{APP_ID} est votre ID d’app :

<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true"/>

Lorsque vous implémentez le partage, 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.

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 à partager relève d’une catégorie que vous pouvez utiliser pour le représenter. Après avoir modélisé le contenu, ajoutez une interface de partage à votre app.

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 dans le modèle ShareLinkContent. Pour obtenir une liste complète des attributs, consultez la référence ShareLinkContent.

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.

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

Voici un exemple pour déclencher le partage :

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .build();

Pour prévisualiser un partage de lien sur Google Play ou sur l’App Store, saisissez votre URL dans le Débogueur de partage.

Si votre partage d’app comprend un lien vers une app sur Google Play ou sur l’App Store, la description et l’image seront ignorées. Nous récupérerons plutôt le titre et l’image de cette app sur le store (et s’il n’y a pas d’image, le partage n’en contiendra pas).

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 Android, version 7.0 ou supérieure, est requise.

Créez votre contenu à partager pour les photos dans le modèle SharePhotoContent. Pour obtenir une liste complète des attributs, consultez la référence SharePhotoContent.

Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
        .setBitmap(image)
        .build();
SharePhotoContent content = new SharePhotoContent.Builder()
        .addPhoto(photo)
        .build();

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.

Créez votre contenu à partager pour les vidéos dans le modèle ShareVideoContent. Pour obtenir une liste complète des attributs, consultez la référence ShareVideoContent.

Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
        .setLocalUrl(videoUrl)
        .build();
ShareVideoContent content = new ShareVideoContent.Builder()
        .setVideo(video)
        .build();

Multimédia

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

  • L’installation de l’app native Facebook pour Android, version 71 ou supérieure, est requise.
  • La taille maximale des photos est de 12 Mo.
  • La taille maximale des vidéos est de 12 Mo.
  • La limite de partage est de 6 vidéos et photos à la fois.

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

SharePhoto sharePhoto1 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
SharePhoto sharePhoto2 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
ShareVideo shareVideo1 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();
ShareVideo shareVideo2 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();

ShareContent shareContent = new ShareMediaContent.Builder()
    .addMedium(sharePhoto1)
    .addMedium(sharePhoto2)
    .addMedium(shareVideo1)
    .addMedium(shareVideo2)
    .build();

ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

Ajout d’interfaces de partage

Après avoir géré le contenu en créant un modèle, vous pouvez déclencher une interface de partage Facebook ou concevoir votre propre interface pour appeler l’API Graph.

Boutons

Sur Android, Facebook propose des boutons natifs permettant de déclencher les partages.


Avec la sortie de la version 4.28.0 du SDK Facebook pour Android, le bouton J’aime pour Android est abandonné. Elle sera prise en charge jusqu’au 5 février 2018.

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. Le bouton J’aime peut être utilisé pour ajouter une mention J’aime à une Page Facebook ou à tout autre objet Open Graph, et peut être référencé par une URL ou un identifiant. Pour ajouter un bouton J’aime, ajoutez l’extrait de code suivant à votre affichage :

LikeView likeView = (LikeView) findViewById(R.id.like_view);
likeView.setObjectIdAndType(
    "https://www.facebook.com/FacebookDevelopers",
    LikeView.ObjectType.PAGE);

Bouton Partager

Le bouton Partager appelle la boîte de dialogue Partager. Pour ajouter un bouton Partager, ajoutez l’extrait de code suivant à votre affichage :

ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button);
shareButton.setShareContent(content);

Le bouton Envoyer est abandonné avec la sortie de la version 4.28.0 du SDK Facebook. Elle sera prise en charge jusqu’au 5 février 2018.

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 :

SendButton sendButton = (SendButton)findViewById(R.id.fb_send_button);
sendButton.setShareContent(shareContent);
sendButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });

Boîte de dialogue Partager

La boîte de dialogue Partager bascule vers l’app Facebook native pour Android, puis votre app reprend le contrôle une fois l’actualité publiée. En fonction du SDK que vous utilisez, les personnes pourront être amenées à appuyer sur l’icône en forme de flèche de retour pour revenir à votre app. Si l’app Facebook n’est pas installée, la boîte de dialogue Partager laisse automatiquement place à la boîte de dialogue basée sur le web.

ShareDialog.show(activityOrFragment, content);

Par exemple, pour afficher la ShareDialog pour un lien dans votre activité, créez une instance ShareDialog dans votre méthode onCreate :

public class MainActivity extends FragmentActivity {
    CallbackManager callbackManager;
    ShareDialog shareDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
    }

Affichez ensuite la boîte de dialogue Partager :

if (ShareDialog.canShow(ShareLinkContent.class)) {
    ShareLinkContent linkContent = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
            .build();
    shareDialog.show(linkContent);
}

Enfin, appelez le callbackManager du SDK dans votre onActivityResult pour gérer la réponse :

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

Boîte de dialogue Contacter

La boîte de dialogue Contacter bascule vers l’app Messenger native pour Android, puis votre app reprend le contrôle une fois l’actualité publiée. En fonction du SDK que vous utilisez, les personnes pourront être amenées à appuyer sur l’icône en forme de flèche de retour pour revenir à votre app.

MessageDialog.show(activityOrFragment, content);

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.

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .setShareHashtag(new ShareHashtag.Builder()
                .setHashtag("#ConnectTheWorld")
                .build());
        .build();

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.

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .setQuote("Connect on a global scale.")
        .build();

Rubriques avancées

Autres solutions intégrées de partage

Dans les anciennes versions du SDK pour Android, 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.

Avec App Links, vous créez 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

Si vous souhaitez utiliser votre propre interface pour partager du contenu, vous devez :

  • construire une interface personnalisée qui envoie des publications vers le point de terminaison de l’API Graph /me/feed ;
  • implémenter Facebook Login dans votre app ;
  • demander l’publish_actions autorisation lorsque des personnes se connectent à votre app.

Voici le code servant à publier un lien sur Facebook depuis votre propre interface :

ShareApi.share(content, null);

Partage d’actualités Open Graph

Les actualités Open Graph permettent à des personnes de partager du contenu riche et structuré par le biais d’une API fortement typée définie par des actions et des objets Open Graph. Ces publications renvoient à votre app ou à la page de la boutique d’applications pour votre app.

Pour en savoir plus sur la configuration des actualités Open Graph, consultez la section Actualités Open Graph sur Android.

Créez votre contenu à partager pour les actions Open Graph dans le modèle ShareOpenGraphContent. Pour obtenir une liste complète des attributs, consultez la ShareOpenGraphContentréférence.

ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
        .putString("og:type", "fitness.course")
        .putString("og:title", "Sample Course")
        .putString("og:description", "This is a sample course.")
        .putInt("fitness:duration:value", 100)
        .putString("fitness:duration:units", "s")
        .putInt("fitness:distance:value", 12)
        .putString("fitness:distance:units", "km")
        .putInt("fitness:speed:value", 5)
        .putString("fitness:speed:units", "m/s")
        .build();
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
        .setActionType("fitness.runs")
        .putObject("fitness:course", object)
        .build();
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
        .setPreviewPropertyName("fitness:course")
        .setAction(action)
        .build();