使用SLComposeViewController在Facebook上共享图像

时间:2015-02-13 09:57:00

标签: ios iphone facebook facebook-graph-api

我正在我的应用中实施Facebook分享。需要与描述共享图像,但是一旦点击或点击图像,它应该被导航到门户网站。

然而,这可以使用feed对话框,但我想使用社交框架来做到这一点。这可能吗 ?

4 个答案:

答案 0 :(得分:2)

使用SLComposeViewController,您无法为用户预填充Facebook帖子。这些方法存在于社交框架中,但几年前Facebook不允许应用程序执行此操作,因此即使您使用:

BOOL initialTextSet = [fbController setInitialText:@"Check out this article."];

该方法将返回YES,但文本实际上不会被填充。

如果您想要更多地控制您发布的内容,那么您必须将Facebook SDK添加到您的项目中。我实际上在我的应用程序的早期版本中走了那条路线,但是维护变得很痛苦。最后,我选择了Apple原生框架。它比FB SDK更容易使用,并且它具有前瞻性。无需怀疑你的下一个iOS版本是否会突然破坏Facebook的份额,因为SDK需要更新(而且经常会更新)。

答案 1 :(得分:1)

似乎不可能这样做这种定制。但是,要从本机框架实现所需的功能,网页网址应包含元数据,如以下帖子所述。

how to use og meta tag for facebook share

答案 2 :(得分:0)

使用此

SLComposeViewController * fbController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];


if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
        SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){

        [fbController dismissViewControllerAnimated:YES completion:nil];

        switch(result){
        case SLComposeViewControllerResultCancelled:
        default:
        {
            NSLog(@"Cancelled.");

        }
            break;
        case SLComposeViewControllerResultDone:
        {
            NSLog(@"Posted.");
        }
            break;
    }};

    [fbController addImage:[UIImage imageNamed:@"1.jpg"]];
    [fbController setInitialText:@"Check out this article."];
    [fbController addURL:[NSURL URLWithString:@"URLString"]];
    [fbController setCompletionHandler:completionHandler];
    [self presentViewController:fbController animated:YES completion:nil];
}

答案 3 :(得分:0)

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

 SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

 SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
 if (result == SLComposeViewControllerResultCancelled)
 {
 DebugLog(@"Cancelled");
 }
 else
 {
 [UIUtils alertView:NSLocalizedString(@"FB POST SUCCEEDED", nil) withTitle:NSLocalizedString(@"SUCCESS", nil)];
 }

 [controller dismissViewControllerAnimated:YES completion:Nil];
 };
 controller.completionHandler =myBlock;

 //Adding the Text to the facebook post value from iOS
 [controller setInitialText:NSLocalizedString(@"SHARE TWITTER", nil)];

 //Adding the URL to the facebook post value from iOS
 //        [controller addURL:[NSURL URLWithString:@"http://www.mobile.safilsunny.com"]];

 //Adding the Image to the facebook post value from iOS
 [controller addImage:self.crushCardImage];

 [self.view.window.rootViewController presentViewController:controller animated:YES completion:Nil];
 }
 else
 {
 [UIUtils alertView:NSLocalizedString(@"NO FB", nil) withTitle:NSLocalizedString(@"FAILURE", nil)];
 }
}