Teilen unter Android

Nachdem du Facebook Login, Facebook Sharing oder Facebook Gaming integriert hast, werden App-Events automatisch für den Events Manager protokolliert und erfasst, es sei denn, du deaktivierst die automatische Protokollierung von App-Events. Wir empfehlen allen App-Entwickler*innen, die Facebook Login, Facebook Sharing oder Facebook Gaming verwenden, zu verstehen, wie dies funktioniert. Detaillierte Informationen dazu, welche Daten erfasst werden und wie du die automatische Protokollierung von App-Events deaktivierst, findest du im Abschnitt Automatische Protokollierung von App-Events.

In diesem Leitfaden wird beschrieben, wie du es deinen Nutzern ermöglichst, Sachen von deiner Android-App auf Facebook zu teilen. Wenn Nutzer Inhalte aus deiner App teilen, werden diese Inhalte in ihrer Chronik angezeigt. Wenn Nutzer Inhalte in ihrer Chronik teilen, kann dieser auch im Feed ihrer Freunde erscheinen. Nutzer können Inhalte aus deiner App auch im Facebook Messenger teilen.

Wenn du das Teilen implementierst, darf deine App zu teilende Inhalte nicht im Voraus ausfüllen. Das Ausfüllen von Inhalten im Voraus entspricht nicht den Entwickler-Richtlinien.

Die folgenden Beispielfotos zeigen den Teilen-Dialog in deiner App auf der linken Seite und auf der rechten Seite den endgültigen Beitrag in der Facebook-App.

Erste Schritte mit Teilen

Das Teilen-SDK für Android ist eine Komponente des Facebook-SDK für Android.

Damit du das Teilen-SDK von Facebook in deinem Projekt verwenden kannst, richte es in Maven als Abhängigkeit ein.

  1. Öffne in deinem Projekt deine_App | Gradle Scripts | build.gradle (Project) und füge das folgende Repository zum Abschnitt buildscript { repositories {}} hinzu:

    mavenCentral() 
    
  2. Öffne in deinem Projekt deine_App | Gradle Scripts | build.gradle (Module: app) und füge die folgende Kompilierungsanweisung im Abschnitt dependencies{} hinzu:

    compile 'com.facebook.android:facebook-share:latest.release'
    
  3. Erstelle dein Projekt.

  4. Konfiguriere deine Facebook-App-ID ordnungsgemäß und verknüpfe sie mit deiner Android-App.

  5. Generiere einen Key-Hash für die Android-Entwicklung und füge ihn auf der Seite Beispiel-Apps in den Entwickler-Einstellungen hinzu. Weitere Informationen findest du unter Erstellen von Key-Hashes für die Entwicklung und Ausführen von Beispiel-Apps.

  6. Füge einen ContentProvider deiner AndroidManifest.xml-Datei hinzu und gib unter {APP_ID} deine App-ID an:

    <provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
    android:name="com.facebook.FacebookContentProvider"
    android:exported="true"/>
    
  7. Falls deine Anwendung für Android 11 oder höher ist, füge den folgenden Abfrage-Block deiner AndroidManifest.xml-Datei hinzu, um die Facebook-App für deine App sichtbar zu machen:

    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
  8. Füge deinem Projekt eine Facebook Activity hinzu und schließe sie in deiner AndroidManifest.xml-Datei mit ein.

Modellieren von Inhalten

Versionen ab 4.0 des Facebook-SDK verfügen über neue Modelle zum Teilen von Inhalten. Jede Art von Inhalt, den Nutzer teilen möchten, verfügt über eine Klasse, die du verwenden kannst, um diesen Inhalt darzustellen. Füge nach dem Modellieren des Inhalts ein Interface für das Teilen zu deiner App hinzu.

Wenn Nutzer Links aus deiner App auf Facebook teilen, wird eine contentURL in den entsprechenden Link aufgenommen. Erstelle den zu teilenden Inhalt für Links im ShareLinkContent-Modell. Eine Liste aller Attribute findest du in der ShareLinkContent-Referenz.

Im Folgenden findest du ein Beispiel dazu, wie du den Teilvorgang auslösen kannst:

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

Um eine Vorschau des geteilten Links für Google Play oder den App Store anzuzeigen, gib deine URL in den Sharing Debugger ein.

Enthält deine geteilte App einen Link zu einer App in Google Play oder im App Store, werden die mitgeteilte Beschreibung und das mitgeteilte Bild ignoriert. Stattdessen wird im Store direkt nach dem Titel und dem Bild der App gesucht (ist kein Bild vorhanden, wird auch kein Bild geteilt).

Fotos

Nutzer können mit dem Dialog „Teilen“ Fotos aus deiner App auf Facebook posten. Zum Teilen müssen Nutzer mindestens Version 7.0 der nativen Facebook-App für Android installiert haben.

Erstelle den zu teilenden Inhalt für Fotos im SharePhotoContent-Modell. Eine Liste aller Attribute findest du in der SharePhotoContent-Referenz.

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

Videos

Nutzer, die deine App verwenden, können mit dem Dialog „Teilen“ Videos auf Facebook teilen.

Erstelle den zu teilenden Inhalt für Videos im ShareVideoContent-Modell. Eine Liste aller Attribute findest du in der ShareVideoContent-Referenz.

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

Multimedia

Nutzer können mit dem Dialog „Teilen“ eine Kombination aus Fotos und Videos aus deiner App auf Facebook teilen. Beachte dabei Folgendes:

  • Nutzer müssen mindestens Version 71 der nativen Facebook-App für Android installiert haben.
  • Es können jeweils maximal 6 Fotos und Videos geteilt werden.

Erstelle deine Multimedia-Inhalte zum Teilen mit dem ShareMediaContent-Modell. Eine Liste aller Attribute findest du in der ShareMediaContent-Referenz.

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

Hinzufügen von Interfaces für das Teilen

Nachdem du den Aufbau eines Modells abgeschlossen hast, kannst du ein Facebook-Interface zum Teilen auslösen.

Buttons

Facebook bietet unter Android native Buttons zum Auslösen des Teilens.


Teilen-Button

Der Button „Teilen“ ruft einen „Teilen“-Dialog auf. Um einen „Teilen“-Button hinzuzufügen, füge folgenden Code-Schnipsel zu deiner Ansicht hinzu:

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

Dialog „Teilen“

Der Dialog „Teilen“ wechselt zur nativen Facebook-App für Android und übergibt die Steuerung nach dem Veröffentlichen des Beitrags zurück an deine App. Abhängig vom verwendeten SDK müssen Personen auf das Symbol für den Zurück-Pfeil tippen, um zu deiner App zurückzukehren. Wenn die Facebook-App nicht installiert ist, wird der „Teilen“-Dialog automatisch zum webbasierten Dialog umgeleitet.

ShareDialog.show(activityOrFragment, content);

Um beispielsweise den ShareDialog für einen Link in deiner Aktivität anzuzeigen, erstelle eine ShareDialog-Instanz in deiner onCreate-Methode:

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>() { ... });
    }

Zeige daraufhin den ShareDialog an:

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

Rufe schlussendlich den callbackManager des SDK in deinem onActivityResult auf, um die Antwort zu verarbeiten:

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

Wenn du AndroidX-Aktivitäten oder -Fragmente nutzt, musst du onActivityResult nicht überschreiben.

Dialog „Nachricht senden“

Der Dialog „Nachricht senden“ wechselt zur nativen Messenger-App für Android und übergibt die Steuerung nach dem Veröffentlichen des Beitrags zurück an deine App. Abhängig vom verwendeten SDK müssen Nutzer auf das Symbol für den Zurück-Pfeil tippen, um zu deiner App zurückzukehren.

MessageDialog.show(activityOrFragment, content);

Hashtags

Du kannst ein einzelnes Hashtag angeben, das mit einem geteilten Foto, Link oder Video angezeigt werden soll. Dieses Hashtag wird auch im Dialog „Teilen“ angezeigt, wo Nutzer es vor der Veröffentlichung entfernen können.

Im Folgenden findest du ein Beispiel für das Hinzufügen eines Hashtags zu einem geteilten Link.

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

Weiterführende Themen

Integrierte Fallbacks zum Teilen

In Vorgängerversionen des Facebook-SDK für Android musste deine App nach einer nativen, installierten Facebook-App suchen, bevor der Dialog „Teilen“ geöffnet werden konnte. Wenn die App nicht installiert war, musstest du eigenen Code bereitstellen, um einen Fallback-Dialog aufzurufen.

Jetzt überprüft das SDK automatisch das Vorhandensein der nativen Facebook-App. Ist sie nicht installiert, öffnet das SDK den Standardbrowser mit dem Feed-Dialog.

Mit App-Links verlinkst du in von deiner App geposteten Beiträgen deine App. Wenn Nutzer auf einen von deiner App veröffentlichten Facebook-Beitrag klicken, wird deine App geöffnet. Du kannst hierbei sogar einen bestimmten Inhalt innerhalb deiner App verlinken.