2016-05-12 5 views
0

Ich habe ein Problem mit dem Teilen eines Links über facebook-ios-sdk.FBSDKShareDialogModeNative Aufrufe sharerDidCancel on Share klicken

Ich brauche FBSDKShareDialogModeNative für den Austausch von Dialog und FBSDKShareDialogModeShareSheet ist keine Option für mich, weil ich Titel, Beschreibung und Bild für gegebene Inhalte, die in diesem Modus nicht funktioniert, festlegen müssen. Jede Antwort, die ich fand, empfahl diesen Modus.

Wenn ich FBSDKShareDialogModeNative verwende, dann wird die native Facebook-App mit dem richtigen Inhalt geöffnet, aber nach dem Klicken auf die Schaltfläche "Share" wird die fb-App geschlossen und nichts wird geteilt. Auch Delegate-Methode sharerDidCancel wird aufgerufen.

Nur die Option, die wie vorgesehen funktioniert, wird über den Browser mit dem Modus FBSDKShareDialogModeFeedBrowser geteilt.

Beispielcode:

FBSDKShareLinkContent *content = [FBSDKShareLinkContent new]; 
content.contentURL = [NSURL URLWithString:@"http://google.com"];                  // Random 
content.contentTitle = @"Test title";                        // Random 
content.contentDescription = @"Test description";                     // Random 
content.imageURL = [NSURL URLWithString:@"http://www.gettyimages.pt/gi-resources/images/Homepage/Hero/PT/PT_hero_42_153645159.jpg"]; // Random 

FBSDKShareDialog *dialog = [FBSDKShareDialog new]; 
dialog.fromViewController = self; 
dialog.shareContent = content; 
dialog.delegate = self; 
dialog.mode = FBSDKShareDialogModeNative; 

if (![dialog canShow]) { 
    dialog.mode = FBSDKShareDialogModeFeedBrowser; 
} 

[dialog show]; 

Hat jemand dieses Problem gelöst? Vielen Dank im Voraus.

Antwort

1

Ich habe herausgefunden, dass ich FacebookDisplayName in plist falsch verwendet habe.

SDK gibt Ihnen keine Warnung (es schlägt automatisch fehl, nachdem Sie die Schaltfläche "Fertig/Freigeben" in fb nativ) gedrückt hat und das Teilen mit falschem Anzeigenamen funktioniert in anderen Modi (shareSheet, feedBrowser usw.).

+1

Nebenbei bemerkte ich, dass dieser FacebookDisplayName gar nicht nötig war (ich habe ihn gelöscht). In der Tat, wenn verwendet, um wichtig zu sein, aber jetzt, wenn Sie es vertippen, haben Sie den silent shareDidCancel-Fehler. Wenn Sie es löschen, sollte alles in Ordnung sein! – H4Hugo

0

Hallo, Sie müssen diesen Code verwenden.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc]init]; 
content.contentURL = [NSURL URLWithString:@"http://google.com"]; // Random 
content.contentTitle = @"Test title"; // Random 
content.contentDescription = @"Test description"; // Random 
content.imageURL = [NSURL URLWithString:@"http://www.gettyimages.pt/gi-resources/images/Homepage/Hero/PT/PT_hero_42_153645159.jpg"]; 

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init]; 
dialog.fromViewController = self; 
dialog.shareContent = content; 
dialog.delegate = self; 
dialog.mode = FBSDKShareDialogModeNative; 

if (![dialog canShow]) { 
    dialog.mode = FBSDKShareDialogModeFeedBrowser; 
} 

[dialog show]; 

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc]init]; 

content.contentURL = [NSURL URLWithString:@"http://google.com"];                  // Random 
content.contentTitle = @"Test title";                        // Random 
content.contentDescription = @"Test description";                     // Random 
content.imageURL = [NSURL URLWithString:@"http://www.gettyimages.pt/gi-resources/images/Homepage/Hero/PT/PT_hero_42_153645159.jpg"]; // 

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init]; 
dialog.fromViewController = self; 
dialog.shareContent = content; 
dialog.delegate = self; 
dialog.mode = FBSDKShareDialogModeNative; 

if (![dialog canShow]) 
{ 
    dialog.mode = FBSDKShareDialogModeFeedBrowser; 
} 

[dialog show]; 
+0

Ich sehe den Unterschied zwischen meinem und Ihrem Code nicht. Nur etwas, das sich geändert hat, ist die Initialisierung über 'allok] init] ', was keinen Unterschied macht (und den gleichen Code, der zweimal gepostet wurde, was ich für einen Fehler halte). Dies teilt nichts mit der Wand des Benutzers. – nuduoz