【问题标题】:Share text to Facebook Objective-C将文本分享到 Facebook Objective-C
【发布时间】:2015-07-04 18:57:51
【问题描述】:

我正在尝试通过我的 iOS 应用程序在 Facebook 上分享一些文本。 我已经设法让它在这样的 Swift 编写的应用程序中工作:

@IBAction func shareAction(sender: AnyObject) {

if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook){
    var facebookSheet:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
    facebookSheet.setInitialText("Preadded text")
    self.presentViewController(facebookSheet, animated: true, completion: nil)

} else {

    var alert = UIAlertController(title: "Accounts", message: "Please login to a Facebook account to share.", preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
    self.presentViewController(alert, animated: true, completion: nil)

} }

但是,我的代码是用 Objective-C 编写的。我的问题是,在 Objective-C 中是否有类似的写法?

【问题讨论】:

    标签: ios objective-c facebook share


    【解决方案1】:

    您可以通过实现Social Framework 来实现这一点

    -(void)fbButton {
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
            fbSLComposeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
            [fbSLComposeViewController addImage:someImage];
            [fbSLComposeViewController setInitialText:@"Some Text"];
            [self presentViewController:fbSLComposeViewController animated:YES completion:nil];
    
            fbSLComposeViewController.completionHandler = ^(SLComposeViewControllerResult result) {
                switch(result) {
                    case SLComposeViewControllerResultCancelled:
                        NSLog(@"facebook: CANCELLED");
                        break;
                    case SLComposeViewControllerResultDone:
                        NSLog(@"facebook: SHARED");
                        break;
                }
            };
        }
        else {
            UIAlertView *fbError = [[UIAlertView alloc] initWithTitle:@"Facebook Unavailable" message:@"Sorry, we're unable to find a Facebook account on your device.\nPlease setup an account in your devices settings and try again." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
            [fbError show];
        }
    }
    

    【讨论】:

    • 它不会在帖子中添加文本“Some Text”。知道为什么它不这样做吗?
    • @MrRiksson 显然这是 iOS 8.3 中的一个错误。这在最新的 iOS 更新之前有效。刚刚检查了我的应用程序已经实现了它,它不再工作了。我已向 Apple 提交错误报告。
    • 另外,如果您取消帖子,SLComposeViewControllerResultCancelled 将不再被调用。
    • 很有趣。不过我认为苹果很快就会解决这个问题。哪位大侠,谢谢解答!真的很感激
    • 我假设这是相当新的呢?我的意思是人们过去常常在 Facebook 上分享游戏分数等。
    【解决方案2】:

    这个怎么样?

    - (IBAction)postToFacebook:(id)sender {
        if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
                SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    
            [controller setInitialText:@"First post from my iPhone app"];
            [self presentViewController:controller animated:YES completion:Nil];        
        }
    }
    

    Reference

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多