Condivisione su iOS

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.

Ulteriori dettagli sull'SDK per iOS di Facebook sono disponibili qui.

Questa guida spiega in dettaglio come abilitare la condivisione dalla tua app per iOS su Facebook. Quando gli utenti effettuano una condivisione dalla tua app, i contenuti vengono visualizzati nel loro diario e nel feed degli amici.

Prerequisiti

Prima di aggiungere la condivisione alla tua app, devi:

  • aggiungere l'SDK di Facebook per iOS al tuo ambiente di sviluppo mobile;
  • configurare e collegare il tuo ID app Facebook;
  • aggiungere l'ID app, il nome visualizzato e il motivo in formato leggibile per l'accesso alle foto nel file .plist dell'app;
  • collegare FBSDKShareKit.framework al tuo progetto.

L'app non deve precompilare i contenuti da condividere, in quanto ciò violerebbe la Normativa della Piattaforma Facebook; consulta le Normative per gli sviluppatori.

Primi passi: SDK per iOS

Modellazione dei contenuti

Ogni tipo di contenuto ha un'interfaccia che puoi usare per rappresentarlo, conforme a SharingContent. Una volta modellati i contenuti, aggiungi all'app un'interfaccia di condivisione conforme a Sharing oppure usa la classe ShareDialog fornita.

Quando gli utenti condividono link dalla tua app su Facebook, con il link da condividere viene incluso anche un elemento contentURL. Crea i contenuti da condividere per i link con il modello ShareLinkContent.

Ecco un esempio di come puoi attivare la condivisione:

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

Nota: se la tua app condivide link agli store di iTunes o Google Play, non pubblicheremo immagini o descrizioni da te specificate, ma informazioni relative all'app estratte direttamente dallo store tramite il Webcrawler. Potrebbero non essere incluse immagini. Per l'anteprima della condivisione di un link a iTunes o Google Play, inserisci l'URL nel debugger di condivisione.

Foto

Gli utenti possono condividere foto dalla tua app su Facebook tramite la finestra di condivisione o un'interfaccia personalizzata:

  • Le dimensioni delle foto non devono superare 12 MB.
  • È necessario installare la versione 7.0 o successive dell'app nativa Facebook per iOS.

Crea i contenuti da condividere per le foto con il modello SharePhotoContent.

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
}

Video

Gli utenti che usano la tua app possono condividere video su Facebook tramite la finestra di condivisione o un'interfaccia personalizzata:

  • Le dimensioni dei video non devono superare 50 MB.
  • È necessario installare la versione 26.0 o successiva del client Facebook per iOS.

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

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

Contenuti multimediali

Gli utenti che usano la tua app possono condividere su Facebook una combinazione di foto e video tramite la finestra di condivisione. Tieni presente le seguenti indicazioni:

  • Per condividere, gli utenti devono aver installato il client Facebook per iOS.
  • Le dimensioni delle foto non devono superare 12 MB e quelle dei video 50 MB.
  • Gli utenti possono condividere al massimo 1 video e fino a 29 o 30 foto.

Crea i tuoi contenuti multimediali da condividere con il modello ShareMediaContent.

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

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

Metodi di condivisione

Dopo aver gestito il contenuto creando un modello, puoi attivare le finestre di condivisione o messaggio.

Pulsanti

Su iOS, Facebook usa pulsanti nativi per attivare le condivisioni.


Pulsante Condividi

Il pulsante Condividi permette agli utenti di condividere contenuti sul diario di Facebook, su quello di un amico o su un gruppo. Il pulsante Condividi chiama una finestra di condivisione. Per aggiungere un pulsante Condividi, inserisci il seguente snippet di codice nella tua visualizzazione:

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

Pulsante Invia

Il pulsante Invia permette agli utenti di inviare privatamente foto, video e link ad amici e contatti tramite l'app Facebook Messenger. Il pulsante Invia chiama una finestra di messaggio. Per aggiungere un pulsante Invia, inserisci il seguente snippet di codice nella tua visualizzazione:

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

Se l'app Messenger non è installata, il pulsante Invia sarà oscurato. Per controllare se il pulsante Invia può essere usato nel dispositivo corrente, usa la proprietà isImplicitlyDisabled di SendButton:

Finestra di condivisione

Per usare i metodi di condivisione di Facebook, definisci i tuoi contenuti come descritto nella sezione precedente relativa alla modellazione e chiama la finestra di condivisione. Ad esempio, per condividere un link tramite la finestra di condivisione:

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

Nelle versioni precedenti dell'SDK per iOS, per aprire la finestra di condivisione l'app doveva controllare che fosse installata l'app nativa Facebook. Se la persona non l'aveva installata, era necessario 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, l'SDK reindirizza le persone al browser predefinito e apre la finestra di dialogo delle Notizie.

Se l'app nativa Facebook è installata, gli utenti visualizzano la schermata di condivisione di iOS invece di essere reindirizzati all'app nativa Facebook per iOS.

Finestra di messaggio

La finestra di messaggio reindirizza all'app nativa Messenger per iOS, restituendo il controllo alla tua app una volta pubblicato il post.

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

Nota: attualmente iPad non supporta la finestra di messaggio.

Integrazione con iOS

iOS include una finestra di condivisione nativa che consente agli utenti di pubblicare aggiornamenti di stato, foto, video e link su Facebook. Consente inoltre di impostare il pubblico per il post e aggiungere a quest'ultimo un tag per la posizione. L'SDK di Facebook supporta l'uso di questo controller nativo; la schermata è quella visualizzata nella maggior parte dei casi quando si chiama la finestra di condivisione di Facebook.

L'uso della finestra di condivisione di iOS è soggetto alle Normative per gli sviluppatori, inclusa la sezione 2.3, secondo cui le app non devono precompilare i contenuti (ovvero il campo initialText) della finestra con contenuti non inseriti dall'utente dell'app.

Inoltre, l'API usa il blocco di stile usato in altre parti dell'SDK di Facebook. Per mostrare la finestra di condivisione nativa di iOS, usa:

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

Tieni presente che l'argomento viewController è obbligatorio per visualizzare la finestra di condivisione.

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.

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

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

Argomenti avanzati

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.

Test e simulatore per iOS

Se usi il simulatore per testare la condivisione nella tua app, provando a condividere video o foto visualizzerai un errore. Devi installare Facebook per iOS, che include la finestra di condivisione. L'opzione non è supportata nel simulatore.

È possibile testare solo la condivisione di link, per cui l'installazione di Facebook per iOS non è necessaria. Per testare altri tipi di condivisione, configura un apposito dispositivo su cui installare Facebook per iOS.