2016-05-12 2 views
0

У меня возникла проблема с предоставлением ссылки через facebook-ios-sdk.FBSDKShareDialogModeNative вызовы sharerDidCancel on Share нажмите

Мне нужно использовать FBSDKShareDialogModeNative для обмена диалоговом окне, а FBSDKShareDialogModeShareSheet - это не вариант для меня, потому что мне нужно установить заголовок, описание и изображение для данного контента, который не работает в этом режиме. Каждый ответ, который я нашел, рекомендовал этот режим.

Когда я использую FBSDKShareDialogModeNative, тогда открытое приложение для Facebook открывается с правильным контентом, но после нажатия кнопки Share fb приложение закрыто и ничего не используется. Также вызывается метод делегирования sharerDidCancel.

Только вариант, который работает по назначению, делится через браузер с помощью режима FBSDKShareDialogModeFeedBrowser.

Пример кода:

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]; 

ли кто-нибудь решить эту проблему? Спасибо заранее.

ответ

1

Я узнал, что использовал неправильный FacebookDisplayName в plist.

SDK не дает вам никаких предупреждений (он не работает после нажатия кнопки Done/Share в fb native), а совместное использование с неправильным отображаемым именем работает в других режимах (shareSheet, feedBrowser и т. Д.).

+1

На боковой ноте я обнаружил, что это имя FacebookDisplayName вообще не нужно (я удалил его). На самом деле, если он используется, чтобы быть важным, но теперь, если вы ошибаетесь, у вас будет этот бесшумный отказ shareDidCancel. Если вы удалите его, все будет хорошо! – H4Hugo

0

Здравствуйте, вам нужно использовать этот код.

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

Я не вижу разницы между моим и вашим кодом. Единственное, что изменилось, это инициализация с помощью 'alloc] init]', которая не имеет никакого значения (и тот же код дважды выставляется, что я считаю ошибкой). Это ничего не говорит о стене пользователя. – nuduoz