首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用FBSDKShareDialog委托

未调用FBSDKShareDialog委托
EN

Stack Overflow用户
提问于 2015-08-25 03:34:48
回答 2查看 4K关注 0票数 2

我为iOS平台使用了最新的Facebook,我使用FBSDKShareDialog与Facebook共享图像,代码可以将图像共享到Facebook.But,我想获得共享结果委托。

代码语言:javascript
复制
- (void)sharedImage:(UIImage *) sharedImage
 fromViewController:(UIViewController *) fromViewController {
    FBSDKSharePhoto *photo  = [[FBSDKSharePhoto alloc] init];
    photo.image             = sharedImage;
    photo.userGenerated     = YES;

    FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
    content.photos = @[photo];

    FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
    dialog.fromViewController = fromViewController;
    dialog.shareContent = content;
    dialog.delegate = self;
    dialog.mode = FBSDKShareDialogModeShareSheet;
    [dialog show];
}
#pragma mark - FBSDKSharingDelegate
- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results {

}
- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error {

}
- (void)sharerDidCancel:(id<FBSDKSharing>)sharer {

}

此外,我在AppDelegate.m中添加了建议代码。

代码语言:javascript
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[FBSDKApplicationDelegate sharedInstance] application:application
                             didFinishLaunchingWithOptions:launchOptions];
    return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBSDKAppEvents activateApp];
}
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    [[FBSDKApplicationDelegate sharedInstance] application:application
                                                   openURL:url
                                         sourceApplication:sourceApplication
                                                annotation:annotation];
}

但是FBSDKSharingDelegate方法从未被调用过。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-28 05:24:36

您正在正确地设置fromViewController,但是控制器应该是委托,而不是object.Below是正在工作的代码,并且委托正在被调用。

代码语言:javascript
复制
- (IBAction)facebookButtonClick:(UIButton *)sender {
    //    FacebookShare *facebookShare = [[FacebookShare alloc] init];
    //    [facebookShare sharedImage:[UIImage imageNamed:@"facebook_share"]
    //            fromViewController:self];
    FBSDKSharePhoto *photo  = [[FBSDKSharePhoto alloc] init];
    photo.image             = [UIImage imageNamed:@"facebook_share"];
    photo.userGenerated     = YES;

    FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
    content.photos = @[photo];

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

//FBSDKSharingDelegate
- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results {
    NSLog(@"completed");
}

- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error {
    NSLog(@"fail %@",error.description);
}

- (void)sharerDidCancel:(id<FBSDKSharing>)sharer {
    NSLog(@"cancel");
}
票数 7
EN

Stack Overflow用户

发布于 2016-11-02 04:19:16

在我的情况下,这是因为我的视图控制器已经解散了,所以不可能调用我的委托函数。所以请检查一下您的视图控制器是否被解职了。希望会有所帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32195141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档