繁体   English   中英

与Facebook SDK 4.0 + iOS共享内容

[英]Sharing content with facebook sdk 4.0 + iOS

我在iOS(objective-c)上使用Facebook SDK来在Facebook上共享图像。 这是我使用的代码:

-(IBAction)facebookShare:(UIButton *)sender {
FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
photo.image = self.image;
photo.userGenerated = YES;
FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
content.photos = @[photo];
[FBSDKShareDialog showFromViewController:self withContent:content delegate:self];  
}

其中image是我通过从用户的库中选择它设置的UIImage。 当我尝试按下按钮(使用此IBAction)时,应用程序崩溃,并出现以下错误:

7月1日10:50:23 .local pkd [917]:错误获取pid 922的权利7月1日10:50:23-[MainViewController sharer:didFailWithError:]:无法识别的选择器发送到实例0x7fd70940efd0 7月1日10:50:23: ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[MainViewController sharer:didFailWithError:]:无法识别的选择器发送到实例0x7fd70940efd0'

这是通过这种方式修复代码后的新错误

FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
        photo.image = //YOUR IMAGE                                                                 photo.userGenerated = YES;
        FBSDKSharePhotoContent * photoContent = [[FBSDKSharePhotoContent alloc] init];
        photoContent.photos = @[photo];
        FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init];
        shareDialog.shareContent = photoContent;
        shareDialog.delegate = (id)self;
        shareDialog.fromViewController = self;
        NSError * error = nil;
        BOOL validation = [shareDialog validateWithError:&error];
        if (validation) {
            [shareDialog show];
        }

ul 1 15:55:02 .local Dailypic [1169]:libMobileGestalt MobileGestalt.c:1025:无法检索区域信息7月1日15:55:06 com.apple.CoreSimulator.SimDevice.D482DFDD-3051-4759-B70D-94EC93BFF5D0 .launchd_sim [471](com.apple.imfoundation.IMRemoteURLConnectionAgent):_DirtyJetsamMemoryLimit密钥在此平台上不可用。 7月1日15:55:07 o.local pkd [498]:错误获取pid 1169的权利7月1日15:55:07 local Dailypic [1169]:错误Domain = com.facebook.sdk.share代码= 2“操作无法完成。(com.facebook.sdk.share错误2。)“ UserInfo = 0x7ffc8a59bcd0 {com.facebook.sdk:FBSDKErrorArgumentValueKey =,com.facebook.sdk:FBSDKErrorDeveloperMessageKey = Feed共享对话框支持FBSDKShareLinkContent。,com.facebook .sdk:FBSDKErrorArgumentNameKey = shareContent} 7月1日15:55:10本地安全性[499]:SecTaskCopyAccessGroups在模拟器中运行时未指定钥匙串访问组,并恢复为默认设置

最后使用其他仿真器解决了。

早期版本的FB SDK中存在一个错误,但是在这里似乎您缺少委托方法的必需实现。

        FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
        photo.image = //YOUR IMAGE                                                                 photo.userGenerated = YES;
        FBSDKSharePhotoContent * photoContent = [[FBSDKSharePhotoContent alloc] init];
        photoContent.photos = @[photo];
        FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init];
        shareDialog.shareContent = photoContent;
        shareDialog.delegate = (id)self;
        shareDialog.fromViewController = self;
        NSError * error = nil;
        BOOL validation = [shareDialog validateWithError:&error];
        if (validation) {
            [shareDialog show];
        }

并实现所需的委托方法

- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results {
    // handle
}
- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error{
    // handle
}
- (void)sharerDidCancel:(id<FBSDKSharing>)sharer{
    // handle
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM