2016-06-14 6 views
0

Ich arbeite an der Freigabe eines Inhalts auf Facebook für eine iOS App mit Swift.Facebook SDK Freigabe auf iOS funktioniert nicht

Ich habe eine Singleton-Klasse namens FBManager und eine Funktion wie folgt geschrieben.

func shareContent(content:String, contentURL:String?, contentTitle:String? , fromController controller:UIViewController { 
     let shareDialog = FBSDKShareDialog() 
     let shareLinkContent = FBSDKShareLinkContent() 

     shareLinkContent.contentDescription = content 

     if let url = contentURL 
     { 
      shareLinkContent.contentURL = NSURL(string: url) 
     } 

     if let title = contentTitle 
     { 
      shareLinkContent.contentTitle = title 
     } 

     shareDialog.delegate = self 
     shareDialog.fromViewController = controller 
     shareDialog.shareContent = shareLinkContent 
     shareDialog.show() 
    } 

Aber dies zeigt nicht einmal einen Anteil Dialog sowohl auf iOS 8 und iOS 9. Stattdessen wird die folgende Delegatmethode wird

genannt
func sharer(sharer: FBSDKSharing!, didFailWithError error: NSError!) { 
} 

mit dem Fehler - „Der Vorgang kann nicht sein könnte abgeschlossen. (com.facebook.sdk.share Fehler 2.) "

Kann jemand bitte helfen?

Antwort

0

Die Fehlercodes von Facebook SDK sind etwas mehrdeutig, da sie ziemlich große Fehlerbereiche abdecken. Der Code, den Sie zur Verfügung gestellt haben, zeigt den Inhalt der Variablen nicht wirklich und daher kann ich das Problem nicht genau lokalisieren. com.facebook.sdk.share error 2 ist jedoch ein Ungültiger Argument Fehler, der normalerweise von einem ungültigen Format eines oder mehrerer Mitglieder FBSDKShareLinkContent entsteht.

Im Allgemeinen können Sie die FBSDKErrorCode enum verwenden, um die (error as NSError).code umzuschalten und herauszufinden, zu welcher Domäne es gehört. (In diesem Fall wird auf Ungültiges Argument verwiesen.)

Sie können auch print(error) direkt in der Delegiertenmethode didFailWithError, die ein sehr beschreibendes Protokoll des Fehlers und was verursacht es speziell ausgegeben werden.

Überprüfen Sie Ihre contentURL, stellen Sie sicher, dass es mit http:// oder https:// oder einem anderen gültigen Protokoll beginnt. Gleiches gilt für die imageURL, wenn Sie eine verwenden oder planen. Dies hat höchstwahrscheinlich Ihren Fehler verursacht!

The SDK's error codes reference kann auch hilfreich sein.