2015-05-12 14 views
8

Io uso facebook sdk ha funzionato bene tranne che per il delegato "sharerDidCancel: (id) sharer".SDK Facebook IOS: cosa non va con sharerDidCancel: (id <FBSDKSharing>) delegato sharer?

Quando posso cancellare la mia parte con nativa finestra FB app, il delegato "condivisori: (id) didCompleteWithResults condivisori: (NSDictionary *) risulta" chiama sempre? Quindi non posso gestire i miei utenti quando pubblicano o cancellano la condivisione della finestra di dialogo, si tratta di un bug di Facebook SDK per IOS?

Grazie per l'aiuto!

+0

Se (NSDictionary *) non è pari a zero allora l'utente preme il pulsante di posta. Altrimenti lui/lei lo annulla. –

+0

possibile duplicato di [Facebook SDK share restituisce sempre sharerDidCancel] (http: // stackoverflow.it/questions/31279243/facebook-sdk-share-always-returns-sharerdidcancel) – lorenzop

+0

Sto avendo lo stesso problema, sicuramente sembra un bug nell'SDK. – Paludis

risposta

-1

Ho anche scoperto che sharerDidCancel non viene mai chiamato quando si annulla.

Si può fare come suggerito da Tejvansh ma controllare se i risultati sono nulli non funzionerà perché non è nulla quando l'utente annulla, è solo vuoto.

Il modo in cui sto facendo è controllare se la chiave "postId" esiste, nel qual caso il post ha avuto esito positivo altrimenti suppongo che l'utente abbia annullato.

esempio Swift:

func sharer(sharer: FBSDKSharing!, didCompleteWithResults results: [NSObject : AnyObject]!) { 
    println("sharing results \(results)") 
    if results["postId"] != nil { 
     println("shared") 
    } else { 
     println("canceled") 
    } 
} 
+1

postId non verrà se condividi tramite l'app nativa Facebook – user2526811

+2

risultati ["postId"] è nullo per me anche dopo un post di successo. Il dizionario dei risultati è vuoto sia per i post annullati che per quelli di successo .. – Paludis

+1

@Paludis Sto avendo lo stesso problema qui. Come sapere esattamente che il post è stato condiviso con successo? a volte i risultati restituiscono zero, anche il post è stato pubblicato! – TomSawyer

0

ho trovato è utile quando si utilizza FBSDKShareDialogModeWeb di condividere un link e FBSDKShareDialogModeNative per condividere una foto, poi quando si fa clic su pulsante di annullamento, si tornerà al delegato annullata. Ma ha funzionato solo prima di iOS 9.1 e non supporta iOS 9.1. Non so perché e come risolverlo ancora. Spero che questa risposta sia utile.

2

Ho appena scavato attraverso la documentazione Facebook SDK ed ho trovato this:

condivisori: didCompleteWithResults: quando l'utente con successo azioni. Inoltre, nel dizionario dei risultati sarà presente una chiave post-identificazione se l'utente ha fornito le autorizzazioni publish_actions dell'app. Se l'utente non ha effettuato l'accesso con Facebook Login, questo metodo verrà anche chiamato se l'utente fa clic su Annulla.

Quindi, a meno che non sei loggato, controllando annullare non funziona (che è spazzatura). Sembra che tu possa essere in grado di fornire alcune autorizzazioni e quindi controllare il post ID.

2

Ho affrontato lo stesso problema durante la condivisione in iOS 11. Ho appena modificato la finestra di dialogo FB nativa nella finestra di dialogo web. Come di seguito:

Uso di seguito il metodo:

dialog.mode = FBSDKShareDialogMode.feedWeb

invece di

dialog.mode = FBSDKShareDialogMode.native

seguito è bene il lavoro di mio code.It per me.

let content: FBSDKShareLinkContent = FBSDKShareLinkContent() 
content.quote = "My Text" 
content.contentURL = NSURL(string: String(format:"My Url"))! as URL! 
let dialog: FBSDKShareDialog = FBSDKShareDialog() 
dialog.fromViewController = self 
dialog.shareContent = content 
dialog.delegate = self 
dialog.mode = FBSDKShareDialogMode.feedWeb 
dialog.show() 
+0

Ma perché? La finestra di dialogo Feed web non funziona correttamente nella mia app – Sjakelien

Problemi correlati