Ich benutze Facebook sdk funktionierte gut, mit Ausnahme von Delegierten " sharerDidCancel: (ID) sharer ".
Wenn ich meine Freigabe mit der nativen Dialog-FB-App abbringe, wird der Delegat " sharer: (id) sharer didCompleteWithResults: (NSDictionary *) Ergebnisse " immer aufgerufen? Also kann ich nicht mit meinen Benutzern umgehen, wenn sie die Dialogfreigabe posten oder abbrechen, ist das ein Fehler von Facebook SDK für IOS?
Danke für jede Hilfe!
Ich habe gerade die Facebook SDK-Dokumente durchforstet und das gefunden :
sharer: didCompleteWithResults: wenn der Benutzer erfolgreich freigegeben hat. 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 bei der Facebook-Anmeldung angemeldet ist, wird diese Methode auch aufgerufen, wenn der Benutzer auf Abbrechen klickt.
Wenn Sie also nicht eingeloggt sind, funktioniert die Überprüfung von cancel nicht (was Quatsch ist). Sieht so aus, als könnten Sie vielleicht einige Berechtigungen vergeben und dann die postId überprüfen.
Ich hatte dasselbe Problem beim Teilen in iOS 11. Ich habe gerade den nativen FB-Dialog in den Webdialog geändert. Wie unten:
Verwenden Sie die folgende Methode:
dialog.mode = FBSDKShareDialogMode.feedWeb
statt
dialog.mode = FBSDKShareDialogMode.native
Unten ist mein Code.Es funktioniert gut für mich.
%Vor% Ich fand es nützlich, wenn Sie FBSDKShareDialogModeWeb
verwenden, um einen Link zu teilen, und FBSDKShareDialogModeNative
, um ein Foto freizugeben. Wenn Sie dann auf "Abbrechen" klicken, wird der abgebrochene Delegat zurückgegeben. 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.
Ich habe auch festgestellt, dass sharerDidCancel beim Abbrechen nie aufgerufen wird.
Sie können tun, wie Tejvansh vorgeschlagen, aber überprüfen, ob die Ergebnisse Null ist, wird nicht funktionieren, weil es nicht Null ist, wenn der Benutzer abbricht, einfach leer.
Ich überprüfe, ob der Schlüssel "postId" existiert. In diesem Fall war der Post erfolgreich, andernfalls nehme ich an, dass der Benutzer abgebrochen wurde.
Schnelles Beispiel:
%Vor%