Partage sur Android

Lorsque vous intégrez Facebook Login, Facebook Sharing ou Facebook Gaming, certains évènements d’application sont automatiquement consignés et collectés pour le Gestionnaire d’évènements, à moins que vous ne désactiviez la consignation automatique des évènements d’application. Nous recommandons à tous les développeurs et toutes les développeuses qui utilisent Facebook Login, Facebook Sharing ou Facebook Gaming, de bien comprendre comment marche cette fonctionnalité. Pour en savoir plus sur les informations collectées et sur la façon de désactiver la consignation automatique des évènements d’application, consultez la page Consignation automatique des évènements d’application.

Ce guide explique comment permettre aux utilisateurs et utilisatrices de votre application Android de partager du contenu sur Facebook à partir de votre application. Le contenu ainsi partagé apparaît sur le fil d’actualité de l’utilisateur·ice. Tout contenu partagé sur le fil d’actualité d’un·e utilisateur·ice peut aussi apparaître sur le Flux de ses ami·es. Le contenu de votre application peut également être partagé sur Facebook Messenger.

Lorsque vous implémentez le partage, votre application ne doit pas préremplir le contenu à partager. Le préremplissage est contraire aux Politiques développeur.

Dans l’exemple ci-dessous, la photo de gauche illustre la boîte de dialogue Partager dans votre application, tandis que la photo de droite montre la publication finale dans l’application Facebook.

Premiers pas avec le partage

Le SDK Sharing pour Android est un composant du SDK Facebook pour Android.

Pour utiliser le SDK Facebook Sharing au sein de votre projet, faites-en une dépendance dans Maven.

  1. Dans votre projet, ouvrez your_app | Gradle Scripts | build.gradle (Project) et ajoutez le référentiel suivant à la section buildscript { repositories {}} :

    mavenCentral() 
    
  2. Dans votre projet, ouvrez your_app | Gradle Scripts | build.gradle (Module: app) et ajoutez l’énoncé de compilation suivant à la section dependencies{} :

    compile 'com.facebook.android:facebook-share:latest.release'
    
  3. Créez votre projet.

  4. Procurez-vous un ID d’application Facebook correctement configuré et associé à votre application Android.

  5. Générez une clé de hachage de développement Android, puis ajoutez-la à la page Exemples d’apps de vos paramètres développeur. Pour en savoir plus, consultez les sections Création d’une clé de hachage de développement et Exécution d’échantillons d’apps.

  6. Dans votre fichier AndroidManifest.xml, ajoutez un ContentProvider et remplacez {APP_ID} par votre ID d’application :

    <provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
    android:name="com.facebook.FacebookContentProvider"
    android:exported="true"/>
    
  7. Si votre application fonctionne sur Android 11 ou une version supérieure, ajoutez le bloc « queries » suivant à votre fichier AndroidManifest.xml afin de rendre l’application Facebook visible dans votre application :

    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
  8. Ajoutez une Facebook Activity à votre projet, et intégrez-la à votre fichier AndroidManifest.xml.

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 application.

Lorsque les utilisateur·ices partagent des liens sur Facebook depuis votre application, ils ou elles incluent un contentURL contenant 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 documentation de référence ShareLinkContent.

Voici un exemple de déclenchement de 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 programme de débug du partage.

Si votre partage d’application comprend un lien vers une application 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 application sur la boutique (et s’il n’y a pas d’image, le partage n’en contiendra pas).

Photos

Il est possible de partager des photos sur Facebook depuis votre application à l’aide de la boîte de dialogue Partager. Pour ce faire, l’installation de l’application native Facebook 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 documentation de 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 utilisateur·ices de votre application peuvent partager des vidéos sur Facebook à l’aide de la boîte de dialogue Partager.

Créez votre contenu à partager pour les vidéos dans le modèle ShareVideoContent. Pour obtenir une liste complète des attributs, consultez la documentation de 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 application, au moyen de la boîte de dialogue Partager. Notez les conditions suivantes :

  • L’installation de l’application native Facebook pour Android, version 71 ou supérieure, est requise.
  • 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 documentation de 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 traité le contenu en créant un modèle, déclenchez une interface de partage Facebook.

Boutons

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


Bouton Partager

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

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

Boîte de dialogue Partager

La boîte de dialogue Partager bascule vers l’application native Facebook pour Android, puis votre application 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 application. Si l’application 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, afin d’afficher la boîte de dialogue ShareDialog pour un lien figurant dans votre activité, créez une instance de la boîte 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 traiter 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);
}

Si vous utilisez des activités ou des fragments AndroidX, vous n’avez pas besoin de remplacer onActivityResult.

Boîte de dialogue Contacter

La boîte de dialogue Contacter bascule vers l’application native Messenger pour Android, puis votre application 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 application.

MessageDialog.show(activityOrFragment, content);

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

Rubriques avancées

Autres solutions intégrées de partage

Dans les anciennes versions du SDK Facebook pour Android, votre application devait vérifier si une application Facebook native était installée avant de pouvoir ouvrir la boîte de dialogue Partager. Si l’application n’était pas installée, 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’application Facebook native. Si elle n’a pas été installée, le SDK renvoie les utilisateurs à leur navigateur par défaut et ouvre la boîte de dialogue Fil d'actualité.

Avec App Links, vous créez un lien vers votre application depuis des actualités Facebook publiées à partir de votre application. Lorsque des utilisateur·ices cliquent sur une actualité Facebook publiée depuis votre application, cette dernière s’ouvre et vous pouvez même ajouter un lien vers un contenu particulier de l’application.