Teilen unter iOS

In diesem Leitfaden wird beschrieben, wie du das Teilen auf Facebook aus deiner iOS-App aktivierst. Wenn Personen Inhalte aus deiner App teilen, werden diese Inhalte in ihrer Chronik und im News Feed ihrer Freunde angezeigt.

Personen können Inhalte aus deiner App auch mit der Messenger Expression Platform oder über den Dialog „Nachricht senden“ im iOS-SDK im Facebook Messenger teilen.

Messenger-SDK für iOSDialog „Nachricht senden“

Voraussetzungen

Bevor du das Teilen über deine App ermöglichen kannst, musst du folgende Voraussetzungen erfüllen:

  • Füge das Facebook-SDK für iOS deiner mobilen Entwicklungsumgebung hinzu.
  • Konfiguriere und verbinde deine Facebook-App-ID.
  • Füge deine App-ID, den Anzeigenamen und einen für Menschen lesbaren Grund für den Fotozugriff zur .plist-Datei deiner App hinzu.
  • Verknüpfe das FBSDKShareKit.framework mit deinem Projekt.

Deine App darf zu teilende Inhalte nicht im Voraus ausfüllen. Dies würde der Facebook-Plattformrichtlinie 2.3 widersprechen.

Erste Schritte mit dem iOS-SDK

Modellieren von Inhalten

Versionen ab 4.0 des Facebook-SDK verfügen über neue Modelle zum Teilen von Inhalten. Jede Art von Inhalt verfügt über eine Interface, die du verwenden kannst, um ihn darzustellen, und die <FBSDKSharingContent> entspricht. Nachdem du den Inhalt modelliert hast, füge eine Interface für das Teilen deiner App hinzu, die <FBSDKSharing> entspricht, wie z. B. den FBSDKShareDialog.

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

Seit dem 18. April 2017 werden die folgenden Parameter nicht mehr von Graph API-Version 2.9 oder höher unterstützt. Bei den Versionen 2.8 und niedriger funktionieren die Parameter weiterhin bis zum 17. Juli 2017.

  • contentTitle: Gibt den Inhaltstitel im Link an
  • imageURL: Die URL eines Miniaturbildes, das im Beitrag angezeigt wird
  • contentDescription: Beschreibung des Inhalts, für gewöhnlich zwei bis vier Sätze

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

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

Hinweis: Wenn deine App Links zu den App Stores von iTunes oder Google Play teilt, posten wir keine Bilder oder Beschreibungen, die du im Teilvorgang angegeben hast. Stattdessen posten wir einige App-Informationen, die wir mit dem Webcrawler direkt aus dem App Store auslesen. Hierbei sind möglicherweise keine Bilder enthalten. Um eine Vorschau des geteilten Links zu iTunes oder Google Play anzuzeigen, gib deine URL in den Sharing Debugger ein.

Fotos

Personen können mithilfe des Dialogs „Teilen“ oder mit deiner eigenen Interface Fotos aus deiner App auf Facebook posten:

  • Fotos müssen weniger als 12 MB groß sein.
  • Nutzer müssen mindestens Version 7.0 der nativen Facebook-App für iOS installiert haben.

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

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

Videos

Personen, die deine App verwenden, können mithilfe des Dialogs „Teilen“ oder mit deiner eigenen Interface Videos auf Facebook teilen:

  • Videos müssen weniger als 12 MB groß sein.
  • Nutzer müssen mindestens Version 26.0 des Facebook-Clients für iOS installiert haben.

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

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

Bei der Video-URL videoURL muss es sich um eine Element-URL handeln. Eine Videoelement-URL erhältst du beispielsweise von UIImagePickerController.

Multimedia

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

  • iOS-Version 7.0 oder höher ist erforderlich.
  • Nutzer müssen mindestens Version 52.0 des Facebook-Clients für iOS installiert haben.
  • Jedes Fotos oder Video muss weniger als 12 MB groß sein.
  • Es können maximal 1 Video und bis zu 29 Fotos oder 30 Fotos geteilt werden.

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

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

Teilmethoden

Nachdem du den Aufbau eines Modells abgeschlossen hast, kannst du entweder die Dialoge „Teilen“ oder „Nachricht senden“ oder auch deine eigene Interface zum Teilen auslösen.

Buttons

Unter iOS verfügt Facebook über native Buttons zum Auslösen von Teilvorgängen.


Button „Gefällt mir“

Über den Button „Gefällt mir“ können Menschen schnell Inhalte mit ihren Freunden teilen. Durch Tippen auf den Button „Gefällt mir“ werden Inhalte aus deiner App mit „Gefällt mir“ markiert und auf Facebook geteilt. Um einen „Gefällt mir“-Button zu deiner Ansicht hinzuzufügen, füge folgenden Codeausschnitt hinzu:

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

Button „Teilen“

Mit dem Button „Teilen“ ermöglichst du es Menschen, Inhalte in ihrer Facebook-Chronik, in der Chronik eines Freundes oder in einer Gruppe zu posten. Der Button „Teilen“ ruft einen „Teilen“-Dialog auf. Um einen „Teilen“-Button zu deiner Ansicht hinzuzufügen, füge folgenden Codeausschnitt hinzu:

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

Button „Senden“

Der Button „Senden“ ermöglicht es Menschen, über den Facebook Messenger private Fotos, Videos und Links an ihre Freunde und Kontakte zu senden. Der Button „Senden“ ruft einen Dialog „Nachricht senden“ auf. Um einen „Senden“-Button zu deiner Ansicht hinzuzufügen, füge folgenden Codeausschnitt hinzu:

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

Wenn die Messenger-App nicht installiert ist, wird der Button „Senden“ ausgeblendet. Stelle sicher, dass das Layout deiner App auch funktioniert, wenn der Button nicht angezeigt wird. Um zu ermitteln, ob der Button „Senden“ auf dem aktuellen Gerät angezeigt werden kann, verwende die FBSDKSendButton-Eigenschaft isHidden:

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

Dialog „Teilen“

Um deinen Nutzern das Facebook-eigene Teilerlebnis bieten zu können, solltest du deinen Inhalt wie im obigen Abschnitt Modellieren von Inhalten beschrieben definieren und daraufhin den Dialog „Teilen“ aufrufen. So teilst du beispielsweise einen Link mit dem Dialog „Teilen“:

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

In Vorgängerversionen des SDK für iOS musste deine App nach einer nativen, installierten Facebook-App suchen, bevor der Dialog „Teilen“ geöffnet werden konnte. Wenn die Person die App nicht installiert hatte, 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. Wenn jemand eine Open Graph-Meldung teilen möchte, öffnet das SDK den Dialog „Teilen“ im Web.

Wenn die native Facebook-App installiert ist, wechseln Versionen 4.0 bis 4.4 des SDK zur nativen Facebook-App für iOS und übergeben die Steuerung nach Veröffentlichen des Beitrags zurück an deine App. Wenn du Version 4.5 (oder höher) des SDK verwendest, sehen Nutzer das iOS Share Sheet, anstatt automatisch zur nativen Facebook-App für iOS zu wechseln, sofern es sich bei dem geteilten Inhalt nicht um eine Open Graph-Meldung handelt.

Dialog „Nachricht senden“

Der Dialog „Nachricht senden“ wechselt zur nativen Messenger-App für iOS und übergibt die Steuerung nach dem Veröffentlichen des Beitrags zurück an deine App.

[FBSDKMessageDialog showWithContent:content delegate:nil];

Hinweis: Derzeit wird der Dialog „Nachricht senden“ auf iPads nicht unterstützt.

iOS-Integration

iOS 6 (oder höher) beinhaltet ein natives Share Sheet, das es Nutzern ermöglicht, Status-Updates, Fotos, Videos und Links auf Facebook zu posten. Es umfasst Unterstützung zur Einstellung der Empfänger des Beitrags sowie zum Markieren des Beitrags mit einem Standort. Du kannst keine Open Graph-Meldungen mit dem Share Sheet teilen. Das Facebook-SDK unterstützt die Verwendung dieses nativen Controllers. Ab Version 4.5 des Facebook-SDK wird dieser in den meisten Fällen verwendet, in denen Nutzer den Facebook-Dialog „Teilen“ aufrufen.

Die Verwendung des iOS Share Sheet unterliegt der Facebook-Plattformrichtlinie, einschließlich Abschnitt 2.3, der besagt, dass Apps den Kontext des Share Sheets nicht im Voraus ausfüllen dürfen. Das bedeutet, dass Apps das initialText-Feld des Share Sheets nicht mit Inhalt füllen dürfen, der nicht zuvor durch den Nutzer der App eingegeben wurde.

Diese API verwendet auch denselben Style-Block wie andere Teile des Facebook-SDK. Um den nativen iOS-Dialog „Teilen“ anzuzeigen, verwende Folgendes:

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

Beachte, dass .fromViewController erforderlich ist, damit das Share Sheet vorhanden ist.

Zusätzliche Funktionen

Beim Verwenden des Facebook-Dialogs „Teilen“ stehen dir weitere Optionen zur Verfügung, die beim Teilen über die API nicht verfügbar sind.

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

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

Zitate teilen

Du kannst es Personen ermöglichen, Text zu markieren, der als Zitat in einem geteilten Link angezeigt wird. Alternativ dazu kannst du ein Zitat vordefinieren, wie z. B. ein hervorgehobenes Zitat in einem Artikel, das mit dem geteilten Link angezeigt werden soll. In jedem Fall erscheint das Zitat in einem eigenen von den Nutzerkommentaren getrennten Feld.

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

Weiterführende Themen

Mit App-Links kannst du in von deiner App geposteten Facebook-Beiträgen deine App verlinken.

Wenn Personen 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.

Deine eigene Interface

Um deine eigene Interface zum Teilen zu verwenden, musst du folgende Schritte ausführen:

Hier findest du den Graph API-Aufruf zum Posten eines Links auf Facebook:

[FBSDKShareAPI shareWithContent:content delegate:nil];

Teilen von Open Graph-Meldungen

Mit Open Graph-Meldungen können Nutzer über eine stark typisierte API detaillierte, strukturierte Inhalte teilen, die durch Open Graph-Handlungen und -Objekte definiert werden.

In geteilten Meldungen wird deine App oder ihre App Store-Seite verlinkt.

Weitere Informationen zum Hinzufügen deiner eigenen Meldungen zu deiner App findest du unter Open Graph-Meldungen unter iOS.

Erstelle den zu teilenden Inhalt für Open Graph-Handlungen mit dem FBSDKShareOpenGraphContent-Modell. Eine Liste aller Attribute findest du in der FBSDKShareOpenGraphContent-Referenz.

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 und -Tests

Wenn du Simulator zum Testen des Teilerlebnisses in deiner App verwendest, werden dir Fehler angezeigt, wenn du versuchst, Videos, Fotos oder Open Graph-Handlungen zu teilen. Das liegt daran, dass Facebook für iOS installiert sein muss, um den Dialog „Teilen“ bereitzustellen. Dies wird für Simulator nicht unterstützt.

Im Fall von geteilten Links muss Facebook für iOS nicht installiert sein. Dieser Testfall ist also möglich. Um andere Teilszenarien zu testen, richte ein Testgerät ein, auf dem Facebook für iOS installiert ist.