2015-05-12 4 views
8

Ich benutze facebook sdk hat gut funktioniert mit Ausnahme von Delegierten "sharerDidCancel: (id) sharer".IOS Facebook SDK: Was ist falsch mit sharerDidCancel: (ID <FBSDKSharing>) Sharer-Delegat?

Wenn ich meinen Anteil mit native App Dialog FB abbrechen, der Delegierte "Sharer: (id) Sharer didCompleteWithResults: (NSDictionary *) führt" immer genannt? Also kann ich nicht mit meinen Benutzern umgehen, wenn sie die Dialogfreigabe posten oder abbrechen, ist das ein Bug von Facebook SDK für IOS?

Danke für jede Hilfe!

+0

Wenn (NSDictionary *) nicht gleich Null ist, dann hat der Benutzer den Post-Button gedrückt. Ansonsten hebt er/sie es auf. –

+0

mögliches Duplikat von [Facebook SDK-Freigabe gibt immer sharerDidCancel zurück] (http: // stackoverflow.com/questions/31279243/facebook-sdk-share-always-returns-shartididcancel) – lorenzop

+0

Ich habe das gleiche Problem, scheint definitiv ein Fehler im SDK. – Paludis

Antwort

-1

Ich habe auch festgestellt, dass sharerDidCancel nie aufgerufen wird, wenn Sie abbrechen.

Sie können tun, wie Tejvansh vorgeschlagen, aber überprüfen, ob Ergebnisse ist nicht funktionieren, weil es nicht Null ist, wenn der Benutzer bricht, nur leer.

Die Art, wie ich es tue, ist zu überprüfen, ob der Schlüssel "postId" existiert, in welchem ​​Fall der Beitrag erfolgreich war, ansonsten nehme ich an, dass der Benutzer abgebrochen wurde.

Swift Beispiel:

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

PostId wird nicht kommen, wenn Sie über native Facebook App teilen – user2526811

+2

Ergebnisse ["postId"] ist für mich auch nach einem erfolgreichen Beitrag nil. Das Ergebniswörterbuch ist sowohl für den abgesagten Post als auch für den erfolgreichen Post leer. – Paludis

+1

@Paludis Ich habe hier die gleichen Probleme. Wie kann ich genau wissen, dass der Beitrag erfolgreich geteilt wurde? manchmal gibt das Ergebnis null zurück, sogar der Post wurde gepostet! – TomSawyer

0

Ich fand es nützlich, wenn Sie FBSDKShareDialogModeWeb verwenden, um einen Link zu teilen und FBSDKShareDialogModeNative ein Foto zu teilen, dann, wenn Sie Schaltfläche Abbrechen klicken, wird es abgesagt Delegat zurückkehren wird. Aber es funktionierte nur vor iOS 9.1 und nicht unter iOS 9.1. Ich weiß nicht warum und wie ich es noch lösen soll. Hoffe, diese Antwort ist hilfreich.

2

Ich habe graben gerade durch die Facebook-SDK-Dokumentation und gefunden this:

Sharer: didCompleteWithResults: wenn der Benutzer erfolgreich Aktien. Darüber hinaus gibt es im Ergebniswörterbuch einen postId-Schlüssel, wenn der Benutzer der App die Berechtigung publish_actions erteilt hat. Wenn dieser Benutzer nicht mit der Facebook-Anmeldung angemeldet ist, wird diese Methode auch aufgerufen, wenn der Benutzer auf Abbrechen klickt.

So, es sei denn, Sie sind eingeloggt, Überprüfung Abbrechen wird nicht funktionieren (was ist Müll). Sieht so aus, als könnten Sie vielleicht einige Berechtigungen vergeben und dann die postId überprüfen.

2

Ich sah das gleiche Problem beim Teilen in iOS 11. Ich habe gerade native FB Dialog zu Web-Dialog geändert. Wie weiter unten:

Verwenden Sie den folgenden Methode:

dialog.mode = FBSDKShareDialogMode.feedWeb

statt

dialog.mode = FBSDKShareDialogMode.native

Unten ist für mich meine code.It Arbeit gut.

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

Aber warum? Der feedWeb-Dialog sieht in meiner App schlecht aus – Sjakelien