Condivisione su iOS

Questa guida spiega in dettaglio come abilitare la condivisione dalla tua app per iOS su Facebook. Quando gli utenti condividono contenuti dalla tua app, questi ultimi vengono visualizzati nel diario e nella sezione Notizie degli amici.

Inoltre, gli utenti possono condividere contenuti dalla tua app su Facebook Messenger con la Piattaforma Messenger Expression Platform o dalla finestra di messaggio della condivisione nell'SDK per iOS.

SDK di Messenger per iOSFinestra di messaggio

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 leggibile per l'accesso alle foto nel file .plist dell'app.
  • Collegare FBSDKShareKit.framework al tuo progetto.

La tua app non deve precompilare i contenuti da condividere. Questo comportamento viola la Normativa della Piattaforma Facebook, consulta il punto 2.3 della Normativa.

Guida introduttiva per l'SDK per iOS

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 un'interfaccia che puoi usare per rappresentarlo, conforme a <FBSDKSharingContent>. Una volta modellati i contenuti, aggiungi un'interfaccia di condivisione alla tua app che sia conforme a <FBSDKSharing>, come ad esempio FBSDKShareDialog.

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 con il modello FBSDKShareLinkContent. Per una lista di tutti gli attributi, consulta il riferimento per FBSDKShareLinkContent.

A partire dal 18 aprile 2017, i seguenti parametri non sono più supportati dall'API Graph 2.9 e versioni successive. Per le versioni 2.8 e precedenti, i parametri continueranno a funzionare fino al 17 luglio 2017.

  • contentTitle, che rappresenta il titolo dei contenuti del link.
  • imageURL, l'URL della miniatura visualizzata nel post.
  • contentDescription, la descrizione dei contenuti, generalmente 2-4 frasi.

Ecco un esempio di come puoi attivare la condivisione:

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

Nota: se la tua app condivide link agli store di iTunes o Google Play, non pubblicheremo immagini o descrizioni da te specificate. Pubblicheremo 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 nell'analizzatore 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 FBSDKSharePhotoContent. Per una lista di tutti gli attributi, consulta il riferimento per FBSDKSharePhotoContent.

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

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 12MB.
  • È necessario installare la versione 26.0 o successiva di Facebook per il client 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.

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

L'URL del video videoURL deve essere l'URL di una risorsa. Ad esempio, puoi ottenerlo da UIImagePickerController.

Contenuti multimediali

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

  • È necessario disporre della versione 7.0 o successiva di iOS.
  • È necessario installare la versione 52.0 o successiva di Facebook per il client iOS.
  • Le dimensioni di ogni foto e video non devono superare 12 MB.
  • Gli utenti possono condividere al massimo 1 video e fino a 29 o 30 foto.

Crea i tuoi contenuti multimediali per la condivisione con il modello FBSDKShareMediaContent. Per una lista di tutti gli attributi, consulta il riferimento per FBSDKShareMediaContent.

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

Metodi di condivisione

Una volta gestiti i contenuti tramite la creazione di un modello, puoi attivare le finestre di condivisione e di messaggio o un'interfaccia personalizzata.

Pulsanti

Su iOS, Facebook usa pulsanti nativi per attivare la condivisione.


Pulsante "Mi piace"

Il pulsante "Mi piace" è un modo veloce per condividere contenuti con gli amici. Toccando il pulsante è possibile mettere "Mi piace" ai contenuti della tua app e condividerli su Facebook. Per aggiungere un pulsante "Mi piace", aggiungi il seguente snippet di codice alla tua visualizzazione:

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

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, aggiungi il seguente snippet di codice alla tua visualizzazione:

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

Pulsante Invia

Il pulsante Invia permette agli utenti di inviare privatamente foto, video e link ad amici e contatti tramite Facebook Messenger. L'operazione viene eseguita tramite una chiamata alla finestra di messaggio. Per aggiungere un pulsante Invia, aggiungi il seguente snippet di codice alla tua visualizzazione:

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

Se l'app Messenger non è installata, il pulsante Invia sarà nascosto. Assicurati che il layout della tua app si adatti a questa situazione. Per controllare se il pulsante Invia può essere mostrato nel dispositivo corrente, usa la proprietà FBSDKSendButton di isHidden.

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

Finestra di condivisione

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

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

Nelle versioni precedenti dell'SDK per iOS, per aprire la finestra di condivisione, la tua app doveva controllare che fosse installata l'app nativa Facebook. Se l'utente non l'aveva installata, era necessario fornire il tuo 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 per aprire la finestra di dialogo delle Notizie. Se l'utente desidera condividere una notizia Open Graph, l'SDK apre la finestra di condivisione per il Web.

Se l'app nativa Facebook è installata, le versioni 4.0-4.4 dell'SDK effettueranno un reindirizzamento, restituendo il controllo alla tua app una volta pubblicato il post. A partire dalla versione 4.5 dell'SDK, gli utenti visualizzeranno la schermata di condivisione di iOS piuttosto che essere reindirizzati all'app nativa Facebook per iOS, a meno che non condividano notizie Open Graph.

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.

[FBSDKMessageDialog showWithContent:content delegate:nil];

Nota: attualmente iPad non supporta la finestra di messaggio.

Integrazione con iOS

iOS 6 e versioni successive includono una schermata di condivisione nativa per pubblicare aggiornamenti di stato, foto, video e link su Facebook, offrendo supporto per configurare il pubblico di destinazione e taggare un luogo. La schermata di condivisione non permette di condividere notizie Open Graph. L'SDK di Facebook supporta l'uso di questo controller nativo. A partire dalla versione 4.5, la schermata è simile a quella visualizzata chiamando la finestra di condivisione di Facebook.

L'uso della schermata di condivisione di iOS è soggetto alla Normativa della Piattaforma Facebook, inclusa la sezione 2.3, secondo cui le app non devono precompilare i contenuti nella schermata di condivisione. Ciò significa che le app non possono precompilare il campo initialText della schermata di condivisione 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:

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

Tieni presente che .fromViewController è necessario per la schermata di condivisione.

Funzioni aggiuntive

Usando la finestra di condivisione di Facebook avrai a disposizione altre opzioni che non sono disponibili quando condividi contenuti usando l'API.

Hashtag

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

Questo è un esempio di aggiunta di un hashtag alla condivisione di un link.

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

Condivisione delle citazioni

Puoi consentire agli utenti di mettere in evidenza una porzione di testo affinché venga visualizzato come citazione con un link condiviso. In alternativa, puoi impostare una citazione predefinita, ad esempio una citazione in evidenza in un articolo, affinché venga visualizzata con il link condiviso. In ogni caso, la citazione verrà visualizzata in un campo apposito, separato dai commenti degli utenti.

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

Argomenti avanzati

Con App Links, puoi inserire link alla tua app nei post pubblicati su Facebook tramite essa.

Quando gli utenti cliccano su un post pubblicato usando la tua app, quest'ultima verrà aperta. Inoltre, puoi inserire link a contenuti specifici dell'app.

Interfaccia personalizzata

Per usare un'interfaccia di condivisione personalizzata, devi:

Per pubblicare un link su Facebook, usa la seguente chiamata API Graph:

[FBSDKShareAPI shareWithContent:content delegate:nil];

Condivisione di notizie Open Graph

Con le notizie Open Graph, gli utenti possono condividere contenuti elaborati e strutturati tramite un'API fortemente tipizzata, definiti dalle azioni e dagli oggetti Open Graph.

Le notizie condivise contengono link alla tua app o alla relativa pagina nell'App Store.

Per maggiori informazioni su come aggiungere notizie personalizzate alla tua app, consulta Notizie Open Graph in iOS.

Crea i contenuti da condividere per le azioni Open Graph con il modello FBSDKShareOpenGraphContent. Per una lista di tutti gli attributi, consulta il riferimento per FBSDKShareOpenGraphContent.

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

Test e simulatore per iOS

Se usi il simulatore per testare la condivisione nella tua app, provando a condividere video, foto o azioni Open Graph visualizzerai un errore. È necessario installare Facebook per iOS, che include la finestra di condivisione. L'opzione non è supportata per il 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.