2015-06-26 7 views
14

Post sollte ich einen FBSDKShareDialog in CodeFBSDKShareDialog bricht, wenn es

- (void)shareWithFacebookDialog; 
{ 
    FBSDKShareLinkContent* content = [[FBSDKShareLinkContent alloc] init]; 
    content.contentURL = [NSURL URLWithString:@"Path Redacted"]; 
    content.contentTitle = @"Title Redacted"; 
    content.contentDescription = @"Description Redacted"; 

    FBSDKShareDialog* dialog = [[FBSDKShareDialog alloc] init]; 
    [dialog setMode:FBSDKShareDialogModeNative]; 
    [dialog setShareContent:content]; 
    [dialog setDelegate:self]; 
    [dialog setFromViewController:self]; 
    [dialog show]; 
} 

Der Dialog startet erstellen und alle Informationen korrekt

enter image description here

Aber sobald Beitrag wird der Dialog geschlossen abgegriffen und der Cancel-Delegat wird aufgerufen.

- (void)sharerDidCancel:(id<FBSDKSharing>)sharer; 

Hat jemand das gesehen? Einen Weg gefunden, um es zu überwinden?

+1

Hmm, ich dies überhaupt nicht bekommen. Welche Version des SDK verwendest du und welche Version der FB App hast du? Wenn Sie eine Wiederholung erhalten können, würde ich empfehlen, eine Beispielanwendung zu erstellen und sie einem Fehlerbericht hier hinzuzufügen: https://developers.facebook.com/bugs –

+0

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

Antwort

9

ersetzen Sie den Code mit diesem

- (void)shareWithFacebookDialog; 
{ 
    FBSDKShareLinkContent content = [[FBSDKShareLinkContent alloc]init]; 
    content.contentURL = [NSURL URLWithString:@"https://www.google.com"]; 
    content.contentTitle = @"ContentTitle"; 
    content.contentDescription = @"ContentDescription"; 
    [FBSDKShareDialog showFromViewController:self 
           withContent:content 
            delegate:self]; 
} 

mir sagen, ob es funktioniert.

+0

Es funktioniert Mars. Ich denke, mein Code oben mit einem instanziierten FBSDKShareDialog wurde * getötet * bearbeiten - Sie sind in Führung für die 250 Punkte! – Damo

+1

Ich habe diese Antwort gewählt, weil der Code funktioniert und beantwortet die Frage, wie man es überwinden kann, die FBSDKShareDialogModeShareSheet anstelle von FBSDKShareDialogModeNative verwendet. Aber warum zum Teufel macht mit FBSDKShareDialogModeNative Rückkehr zu sharerDidCancel, wenn Sie post ??? Mein Inhalt ist genau derselbe, aber es wird nicht mit FBSDKShareDialogModeNative gepostet. – John81

+0

Beachten Sie, dass 'fromViewController' für' FBSDKShareDialogModeShareSheet' zwingend erforderlich ist! – DanSkeel

0

Das passierte mir, als ich versuchte, die Methode direkt nach dem Login aufzurufen.

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
     if (error || result.isCancelled) { 

     } else { 
      [self shareWithFacebookDialog]; 
     } 
    }]; 

Es funktioniert, wenn ich es nur ohne Anmeldung (sollte bereits gültiges Token haben) aufrufen.

if ([FBSDKAccessToken currentAccessToken]) { 
    [self shareWithFacebookDialog]; 
} 
0

hatte ich das gleiche Problem: Facebook SDK share always returns sharerDidCancel

Mein Fehler in der AppDelegate Methode war:

hier ist ein Link mit der Lösung http://jitu1990.blogspot.it/2015/05/share-with-facebook-from-ios-app.html

Und hier ist der Code

- (BOOL)application:(UIApplication *)application openURL:(NSURL*)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url sourceApplication:sourceApplication annotation:annotation]; 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    [FBSDKAppEvents activateApp]; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    return [ [FBSDKApplicationDelegate sharedInstance] application :application 
      didFinishLaunchingWithOptions:launchOptions] 
    } 
0

Für Facebook SDK v4.5 + versuchen Sie Folgendes:

Objective-C

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; 
content.contentURL = [NSURL URLWithString:@"http://developers.facebook.com"]; 
[FBSDKShareDialog showFromViewController:self withContent:content delegate:self]; 

Swift

let content = FBSDKShareLinkContent() 
content.contentURL = URL(string: "http://developers.facebook.com") 
FBSDKShareDialog.show(from: self, with: content, delegate: self) 
Verwandte Themen