Condivisione su Android

Dopo aver integrato Facebook Login, la condivisione su Facebook o Facebook Gaming, alcuni eventi nell'app vengono registrati e raccolti automaticamente per Gestione eventi, a meno che tu non disabiliti la registrazione automatica degli eventi nell'app. Consigliamo a tutti gli sviluppatori di app di usare Facebook Login, la condivisione su Facebook o Facebook Gaming per capire come funziona questa funzionalità. Per maggiori dettagli sul tipo di informazioni raccolte e su come disabilitare la registrazione automatica degli eventi nell'app, consulta Registrazione automatica degli eventi nell'app.

Questa guida spiega come consentire agli utenti della tua app per Android di effettuare condivisioni dall'app su Facebook. Quando gli utenti effettuano condivisioni dalla tua app, i contenuti condivisi vengono visualizzati nel loro diario e sono visibili anche nel feed dei loro amici. Gli utenti possono anche condividere contenuti dalla tua app su Facebook Messenger.

Quando implementi la condivisione, assicurati che l'app non precompili i contenuti da condividere, in quanto la precompilazione non è conforme alle Normative per gli sviluppatori.

Le foto di esempio seguenti mostrano la finestra di condivisione nella tua app a sinistra e il post risultante nell'app Facebook a destra.

Primi passi con la condivisione

L'SDK per la condivisione per Android è un componente dell'SDK di Facebook per Android.

Per usare l'SDK per la condivisione di Facebook nel tuo progetto, rendilo una dipendenza in Maven.

  1. Nel progetto, apri your_app | Gradle Scripts | build.gradle (Project) e aggiungi il repository seguente alla sezione buildscript { repositories {}}:

    mavenCentral() 
    
  2. Nel progetto, apri your_app | Gradle Scripts | build.gradle (Module: app) e aggiungi l'istruzione di compilazione seguente alla sezione dependencies{}:

    compile 'com.facebook.android:facebook-share:latest.release'
    
  3. Crea il progetto.

  4. Ottieni l'ID app Facebook, configurato e collegato alla tua app per Android.

  5. Genera un hash chiave di sviluppo Android e aggiungilo alla pagina App di esempio delle tue impostazioni per gli sviluppatori. Per maggiori informazioni, consulta Creazione di un hash chiave di sviluppo ed Esecuzione delle app di esempio.

  6. Aggiungi un ContentProvider al file AndroidManifest.xml e imposta il tuo ID app in {APP_ID}:

    <provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
    android:name="com.facebook.FacebookContentProvider"
    android:exported="true"/>
    
  7. Se la tua app è destinata a dispositivi con Android 11 o versioni successive, aggiungi il blocco di query seguente al file AndroidManifest.xml per rendere l'app Facebook visibile alla tua app:

    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
  8. Aggiungi un elemento Facebook Activity al tuo progetto e includilo nel file AndroidManifest.xml.

Modellazione dei contenuti

A partire dalla versione 4.0, gli SDK di Facebook offrono nuovi modelli per la condivisione dei contenuti. Ogni tipo di contenuto ha una classe, che puoi usare per rappresentarlo. Una volta modellati i contenuti, aggiungi un'interfaccia di condivisione alla tua app.

Quando gli utenti condividono link dalla tua app su Facebook, viene incluso anche un elemento contentURL con il link da condividere. Crea i contenuti da condividere per i link nel modello ShareLinkContent. Per una lista di tutti gli attributi, consulta il riferimento per ShareLinkContent.

Ecco un esempio di come puoi attivare la condivisione:

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

Per l'anteprima della condivisione di un link a Google Play o all'App Store, inserisci l'URL nel Debugger di condivisione.

Se la condivisione della tua app contiene un link a qualsiasi app su Google Play o sull'App Store, la descrizione e l'immagine incluse nella condivisione verranno ignorate. Tuttavia, estrarremo direttamente il titolo e l'immagine di tale app dallo store (se non è presente nessuna immagine, la condivisione non ne includerà una).

Foto

Gli utenti possono condividere foto dalla tua app su Facebook tramite la finestra di condivisione. Per effettuare la condivisione, è necessario avere la versione 7.0 o successive dell'app nativa Facebook per Android.

Crea i contenuti da condividere per le foto nel modello SharePhotoContent. Per una lista di tutti gli attributi, consulta il riferimento per SharePhotoContent.

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

Video

Gli utenti che usano la tua app possono condividere video su Facebook tramite la finestra di condivisione.

Crea i contenuti da condividere per i video nel modello ShareVideoContent. Per una lista di tutti gli attributi, consulta il riferimento per ShareVideoContent.

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

Contenuti multimediali

Gli utenti possono condividere una combinazione di foto e video dalla tua app a Facebook usando la finestra di condivisione. Tieni presente le seguenti indicazioni:

  • È necessario installare la versione 71 o successive dell'app nativa Facebook per Android.
  • È possibile condividere fino a un massimo di 6 foto e video contemporaneamente.

Crea i tuoi contenuti multimediali per la condivisione con il modello ShareMediaContent. Per una lista di tutti gli attributi, consulta il riferimento per 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);

Aggiunta di interfacce di condivisione

Una volta gestiti i contenuti tramite la creazione di un modello, puoi attivare un'interfaccia di condivisione di Facebook.

Pulsanti

Facebook offre pulsanti nativi per attivare la condivisione su Android.


Pulsante Condividi

Il pulsante Condividi chiama una finestra di condivisione. Per aggiungere un pulsante Condividi, aggiungi il seguente snippet di codice alla tua visualizzazione:

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

Finestra di condivisione

La finestra di condivisione reindirizza all'app nativa Facebook per Android, restituendo il controllo alla tua app una volta pubblicato il post. A seconda dell'SDK in uso, gli utenti potrebbero dover toccare l'icona della freccia indietro per tornare all'app. Se l'app Facebook non è installata, verrà aperta automaticamente la finestra di condivisione basata sul web come fallback.

ShareDialog.show(activityOrFragment, content);

Ad esempio, per mostrare la ShareDialog per un link nella tua attività, crea un'istanza ShareDialog nel metodo 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>() { ... });
    }

Successivamente, mostra la ShareDialog:

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

Infine, chiama callbackManager dell'SDK in onActivityResult per gestire la risposta:

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

Se usi attività o frammenti AndroidX, non devi sovrascrivere onActivityResult.

Finestra di messaggio

La finestra di messaggio reindirizza all'app nativa Messenger per Android, restituendo il controllo alla tua app una volta pubblicato il post. A seconda dell'SDK in uso, gli utenti potrebbero dover toccare l'icona della freccia indietro per tornare all'app.

MessageDialog.show(activityOrFragment, content);

Hashtag

Puoi specificare che un singolo hashtag venga visualizzato con una foto, un link o un video condivisi. L'hashtag viene visualizzato anche nella finestra di condivisione e gli utenti possono rimuoverlo prima della pubblicazione.

Di seguito è riportato un esempio di come aggiungere un hashtag alla condivisione di un link.

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

Argomenti avanzati

Fallback di condivisione incorporati

Nelle versioni precedenti dell'SDK di Facebook per Android, prima di poter aprire la finestra di condivisione l'app doveva controllare che fosse installata l'app nativa Facebook. Se l'utente non l'aveva installata, dovevi fornire il codice per chiamare una finestra di dialogo di fallback.

Ora l'SDK controlla automaticamente la presenza dell'app nativa Facebook. Se non è installata, reindirizza gli utenti al browser predefinito e apre la finestra di dialogo delle Notizie.

Con App Links, puoi inserire link alla tua app nei post pubblicati su Facebook tramite l'app stessa. Quando gli utenti cliccano su un post pubblicato su Facebook usando la tua app, quest'ultima verrà aperta. Puoi anche inserire link a contenuti specifici all'interno dell'app.