【问题标题】:How to share something on facebook from my iOS app?如何通过我的 iOS 应用在 Facebook 上分享内容?
【发布时间】:2012-11-17 10:23:29
【问题描述】:

我正在向我的 iOS 应用程序添加共享功能(我必须支持到 iOS 4.3)。在 Facebook 案例中,我要实现的行为是:

如果 facebook 应用程序存在于 iDevice 上 然后打开它并与所有已预填充的内容共享视图

否则 在 safari(或任何浏览器)中打开 www.facebook.com/sharer.php?[etc] 以分享我的页面。

这是我写的:

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"fb://publish/profile/me?text=%@", facebookShareLink]];

    if([[UIApplication sharedApplication] canOpenURL:url]) {

        [[UIApplication sharedApplication] openURL:url];

    } else {

        NSString *facebookLink = [NSString stringWithFormat:@"http://www.facebook.com/sharer.php?u=%@&t=%@", facebookShareLink, titleToShare];
        facebookLink = [facebookLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:facebookLink]];
    }

当 Facebook 应用未安装时,它运行良好,但安装后它会打开,但不会转到共享视图。

我在某处读到不再支持 URL 方案(我没有来源)。这是真的吗?

那么还有没有办法在不集成 Facebook iOS SDK 的情况下做到这一点?我不想添加这个 SDK,我只需要共享功能而不是所有 Graph 的东西。

编辑: 我不希望我的应用程序在社交媒体上分享自己的东西,而是提示用户并让他能够轻松地自己完成。我认为我不应该必须通过 Facebook 应用程序或 Twitter 应用程序进行身份验证才能做到这一点,不是吗?用户将在应用程序或移动网站上进行身份验证。

【问题讨论】:

    标签: ios facebook share


    【解决方案1】:

    我终于使用 iOS 内置的 facebook 共享对话框 (SLComposeViewController) 提出了一个解决方案,如果用户不使用 iOS 6,该对话框会退回到网站

    NSString *facebookShareLink = @"some link to share";
    NSString *titleToShare = @"some title";
    
    // if we're not on iOS 6, SLComposeViewController won't be available. Then fallback on website.
    Class composeViewControllerClass = [SLComposeViewController class];
    
    if(composeViewControllerClass == nil || ![composeViewControllerClass isAvailableForServiceType:SLServiceTypeFacebook]) {
    
        NSString *facebookLink = [NSString stringWithFormat:@"http://www.facebook.com/sharer.php?u=%@&t=%@", facebookShareLink, titleToShare];
        facebookLink = [facebookLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:facebookLink]];
    
    } else {
    
        SLComposeViewController *composeViewController = [composeViewControllerClass composeViewControllerForServiceType:SLServiceTypeFacebook];
        [composeViewController setInitialText:titleToShare];
        [composeViewController addURL:[NSURL URLWithString:facebookShareLink]];
    
        [parentController presentModalViewController:composeViewController animated:YES];
    }
    

    【讨论】:

    • 你能告诉我如何像facebook.com/sharer.php?u=%@&t=%@..那样通过http://链接发帖吗?在FB上发帖的链接是什么?
    • 在这种情况下,我不必在 developer.facebook 上注册新应用程序,也不需要在 facebook 密钥和秘密中注册新应用程序是对的吗?
    • 确实如此。你甚至不需要 facebook sdk。
    • 以这种方式分享的iTunes URL不可点击。
    【解决方案2】:

    您可以使用第三方组件,例如 ShareKit。
    http://getsharekit.com/

    【讨论】:

    • ShareKit 要求我添加 Facebook 密钥和密码,就像 Facebook iOS SDK 一样。
    【解决方案3】:

    您可以使用 uiactivity 在 facebook、twitter 或电子邮件中分享

    UIImage *image1 = shareimgview.image;
    NSString *str1=[@"Brand: " stringByAppendingString:brand_field.text];
    NSString *str2=[@"Product: " stringByAppendingString:product_field.text];
    NSString *str3=[@"Model: "stringByAppendingString:model_field.text];
    NSString *str4=[@"Comment: "stringByAppendingString:status_field.text];
    NSArray* dataToShare = @[str1,myurl,str2,str3,str4, image1];
    UIActivityViewController *actviewcon = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];
    [self presentViewController:actviewcon animated:YES completion:NULL];
    

    【讨论】:

      【解决方案4】:

      对于那些正在寻找 Swift 3 解决方案的人来说,这里是:

      if let composeVC = SLComposeViewController(forServiceType:serviceType) {
          composeVC.add(object.image())
          composeVC.add(object.url())
          composeVC.setInitialText(object.text())
          presentingVC.present(composeVC, animated: true, completion: nil)
      }
      

      【讨论】:

        猜你喜欢
        • 2014-03-12
        • 1970-01-01
        • 2020-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-18
        • 2013-01-03
        • 1970-01-01
        相关资源
        最近更新 更多