2015-05-12 6 views
8

Używam facebook sdk działa dobrze z wyjątkiem delegata "sharerDidAnuluj: (identyfikator) sharer".IOS Facebook SDK: co jest nie tak z sharerDidCancel: (id <FBSDKSharing>) delegat sharer?

Po anulowaniu mojego udziału w macierzystym oknie dialogowym aplikacji FB, delegat "sharer: (identyfikator) sharer didCompleteWithResults: (NSDictionary *) wyniki" zawsze dzwonił? Więc nie mogę obsłużyć użytkowników, którzy publikują lub anulują udział w oknie dialogowym, czy jest to błąd pakietu SDK Facebooka dla IOS?

Dzięki za pomoc!

+0

Jeśli (NSDictionary *) nie ma wartości zerowej, użytkownik nacisnął przycisk wiadomości. W przeciwnym razie on/ona anuluje to. –

+0

możliwy duplikat [Udział SDK Facebook zawsze zwraca program sharerDidCancel] (http: // stackoverflow.com/questions/31279243/facebook-sdk-share-always-returns-sharerdidcancel) – lorenzop

+0

Mam ten sam problem, zdecydowanie wydaje się być błędem w SDK. – Paludis

Odpowiedz

-1

Też odkryłem, że sharerDidCancel nigdy nie jest wywoływany podczas anulowania.

Możesz zrobić, jak sugeruje Tejvansh, ale sprawdzenie, czy wyniki są zerowe, nie zadziała, ponieważ nie jest zerowe, gdy użytkownik anuluje, po prostu puste.

Sposób, w jaki to robię, polega na sprawdzeniu, czy klucz "postId" istnieje, w którym to przypadku post okazał się skuteczny, w przeciwnym razie zakładam, że użytkownik został anulowany.

Swift przykład:

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

post nie będzie przychodził, jeśli udostępnisz za pomocą natywnej aplikacji Facebook – user2526811

+2

wyniki ["postId"] jest dla mnie zerowe nawet po udanym poście. Słownik wyników jest pusty zarówno dla anulowanego postu, jak i udanego wpisu. – Paludis

+1

@Paludis Mam tu takie same kłopoty. Jak dokładnie wiedzieć, że post został udostępniony z powodzeniem? czasami wyniki zwracają zero, nawet post został opublikowany! – TomSawyer

0

Uważam, że to jest przydatne podczas korzystania FBSDKShareDialogModeWeb udostępnić link i FBSDKShareDialogModeNative aby udostępnić zdjęcie, a następnie po kliknięciu przycisku Anuluj spowoduje powrót do odwołanego delegata. Ale działało to tylko przed iOS 9.1, a nie na iOS 9.1. Nie wiem, dlaczego i jak go rozwiązać. Mam nadzieję, że ta odpowiedź jest pomocna.

2

Właśnie zostałem przekopywania się przez Facebook SDK docs i znalazłem this:

SHARER: didCompleteWithResults: akcji, gdy użytkownik pomyślnie. Ponadto w słowniku wyników pojawi się również klucz postID, jeśli użytkownik nadał aplikacji uprawnienia publish_actions. Jeśli ten użytkownik nie zalogował się za pomocą Facebooka, ta metoda zostanie również wywołana, jeśli użytkownik kliknie Anuluj.

Tak więc, jeśli nie jesteś zalogowany, sprawdzanie anulowania nie zadziała (co jest śmieciem). Wygląda na to, że możesz podać kilka uprawnień, a następnie sprawdzić postID.

2

Napotkałem ten sam problem podczas udostępniania w iOS 11. Właśnie zmieniłem okno dialogowe rodzimego FB na okno dialogowe WWW. Jak poniżej:

skorzystać z poniższego sposobu:

dialog.mode = FBSDKShareDialogMode.feedWeb

zamiast

dialog.mode = FBSDKShareDialogMode.native

Poniżej jest moje code.It za prace w porządku dla mnie.

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

Ale dlaczego? Okno informacyjne kanału RSS wygląda źle w mojej aplikacji – Sjakelien