Teilen unter iOS

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.

Weitere Einzelheiten zum FB iOS SDK findest du hier.

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

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 widersprechen. Siehe Entwicklungsrichtlinien.

Erste Schritte mit dem iOS-SDK

Modellieren von Inhalten

Jede Art von Inhalt verfügt über ein Interface, das du verwenden kannst, um ihn darzustellen, und das das SharingContent einhält. Nachdem du den Inhalt modelliert hast, füge ein Interface für das Teilen zu deiner App hinzu, das Sharing entspricht, oder verwende die angegebene ShareDialog-Klasse.

Wenn Nutzer*innen 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.

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

guard let url = URL(string: "https://developers.facebook.com") else {
    // handle and return
}

let content = ShareLinkContent()
content.contentURL = url

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: self
)
dialog.show()

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

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

  • Die Größe von Fotos darf 12 MB nicht überschreiten.
  • Nutzer*innen 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 SharePhotoContent-Modell.

func imagePickerController(
    _ picker: UIImagePickerController, 
    didFinishPickingMediaWithInfo 
    info: [UIImagePickerController.InfoKey : Any]
) {
    guard let image = info[.originalImage] as? UIImage else {
        // handle and return
        return
    }
    let photo = SharePhoto(
        image: image,
        userGenerated: true
    )
    var content = SharePhotoContent()
    content.photos = [photo]
    // use the content
}

Videos

Nutzer*innen, die deine App verwenden, können mithilfe des Dialogs „Teilen“ oder mit deinem eigenen Interface Videos auf Facebook teilen:

  • Die Größe von Videos darf 50 MB nicht überschreiten.
  • Nutzer*innen 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.

func imagePickerController(
    _ picker: UIImagePickerController,
    didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]
) {
    let video: ShareVideo

    if #available(iOS 11, *) {
        guard let videoAsset = info[.phAsset] as? PHAsset else {
            return
        }
        video = ShareVideo(videoAsset: videoAsset)
    } else {
        guard let url = info[.referenceURL] as? URL else {
            return
        }
        video = ShareVideo(videoURL: url)
    }
}

Multimedia

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

  • Nutzer*innen, die teilen, müssen den Facebook-Client für iOS installiert haben.
  • Die Größe von Fotos darf 12 MB nicht überschreiten und die Größe von Videos darf maximal 50 MB betragen.
  • Es können maximal 1 Video und bis zu 29 Fotos oder 30 Fotos geteilt werden.

Erstelle deine Multimedia-Inhalte zum Teilen mit dem ShareMediaContent-Modell.

let photo = SharePhoto(...)
let video = ShareVideo(...)

var content = ShareMediaContent()
content.media = [photo, video]

Teilmethoden

Nachdem du Inhalt mit dem Aufbau eines Modells verarbeitet hast, kannst du die Dialoge „Teilen“ oder „Nachricht senden“ auslösen.

Buttons

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


Teilen-Button

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:

var button = FBShareButton()
button.shareContent = content
// Add button to view

Button „Senden“

Mit dem Button „Senden“ können Nutzer*innen Fotos, Videos und Links privat an ihre Freunde und Kontakte über die Facebook Messenger-App senden. Der Button „Senden“ ruft einen Dialog „Nachricht senden“ auf. Um einen „Senden“-Button zu deiner Ansicht hinzuzufügen, füge folgenden Codeausschnitt hinzu:

var button = SendButton()
button.shareContent = content
// Add button to view

Wenn die Messenger-App nicht installiert ist, wird der Button „Senden“ ausgeblendet. Um zu ermitteln, ob der Button „Senden“ auf dem aktuellen Gerät genutzt werden kann, verwende die FBSDKSendButton-Eigenschaft isHidden:

Dialog „Teilen“

Um deinen Nutzer*innen 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“:

guard let url = URL(string: "https://developers.facebook.com") else {
    // handle and return
}

let content = ShareLinkContent()
content.contentURL = url

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: self
)
dialog.show()

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 die native Facebook-App installiert ist, sehen Nutzer*innen das iOS Share Sheet, anstatt automatisch zur nativen Facebook-App für iOS zu wechseln.

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.

MessageDialog(content: content, delegate: delegate).show()

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

iOS-Integration

iOS beinhaltet ein natives Share Sheet, das es Nutzer*innen ermöglicht, Status-Updates, Fotos, Videos und Links auf Facebook zu posten. Es umfasst Unterstützung zur Einstellung der Empfänger*innen des Beitrags sowie zum Markieren des Beitrags mit einem Standort. Das Facebook-SDK unterstützt die Verwendung dieses nativen Controllers. Dieser wird in den meisten Fällen verwendet, wenn der Facebook-Dialog „Teilen“ aufgerufen wird.

Die Verwendung des iOS Share Sheet unterliegt den Entwicklungsrichtlinien, 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*die Nutzer*in 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:

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: nil
)
dialog.mode = .shareSheet
dialog.show()

Beachte, dass das Argument viewController erforderlich ist, damit das Share Sheet vorhanden ist.

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*innen 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.

let content = ShareLinkContent()
guard let url = URL(string: "https://developers.facebook.com") else { return }

content.contentURL = url
content.hashtag = Hashtag("#MadeWithHackbook")

Weiterführende Themen

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

Wenn Nutzer*innen 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.

iOS-Simulator und -Tests

Wenn du Simulator zum Testen des Teilerlebnisses in deiner App verwendest, werden dir Fehler angezeigt, wenn du versuchst, Videos oder Fotos 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.