【问题标题】:Integrating Facebook SDK for older versions of Xcode to Support both iOS 5 and iOS 6为旧版 Xcode 集成 Facebook SDK 以支持 iOS 5 和 iOS 6
【发布时间】:2013-03-17 23:28:16
【问题描述】:

我仍在使用 XCode 4.3.2 和 iOS 5.1 基础 SDK。我想要实现的是为 iOS 5.0+ 设备集成 Facebook API。只是基本功能,例如代表发帖和获取基本用户信息。

我假设哪个 Facebook SDK 可以在 iOS 5 上运行,也可以在 iOS 6 上运行,但我不确定。

作为 Facebook 集成的新手,任何人都可以对这个问题有所了解。 (由于我正在做这个项目,升级 XCode 和 iOS SDK 不是一个选项)

  • 我应该研究哪个 iOS SDK?
  • 我可以同时支持 iOS 5 和 6、用基础SDK 5.1和XCode 4.3?
  • 是否有支持两个 iOS 版本的 API?
  • Facebook 集成有什么要求吗?

【问题讨论】:

    标签: iphone ios facebook facebook-ios-sdk


    【解决方案1】:

    首先您阅读了 Facebook 开发人员发布的这篇文章

    http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/

    在第 1 步中,它也适用于 xcode 4.3

    你仔细阅读所有步骤n实施

    在第 6 步中,您在 Facebook Btn Pressed 的位置编写如下代码

     - (IBAction)facebookBtnPressed:(id)sender
    {
    
    
            // if it is available to us, we will post using the native dialog
            BOOL displayedNativeDialog = [FBNativeDialogs presentShareDialogModallyFrom:self
                                                                            initialText:[NSString stringWithFormat:@"Here U write code which u want to post on facebook"]
                                                                                  image:[UIImage imageNamed:@"1.jpg"]
                                                                                    url:[NSURL URLWithString:@""]
                                                                                handler:nil];
    
            if (!displayedNativeDialog)
            {
                NSString *shareStr = [NSString stringWithFormat:@"Here U write code which u want to post on facebook"];
                NSMutableDictionary* params = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
                                               shareStr,@"description",
                                               @"sharelink", @"link",
                                               @"ImageName", @"picture",
                                               nil];
    
                [self performPublishAction:^{
    
                    [FBRequestConnection startWithGraphPath:@"me/feed" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    
                        if (error)
                        {
                            NSLog(@"error in post");
                        }
                        else
                        {
                            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"Post Successfully" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
                            [alert show];
                        }
    
                    }];
                }];
            }
        //}
    
        //===set delagate in Viewcontroller.h of mySLComposerSheet
        [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
            NSString *output;
            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    output = @"Action Cancelled";
                    break;
                case SLComposeViewControllerResultDone:
                    output = @"Post Successfully";
                    break;
                default:
                    break;
            } //check if everything worked properly. Give out a message on the state.
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [alert show];
        }];
    }
    
    - (void) performPublishAction:(void (^)(void)) action {
        if ([[FBSession activeSession]isOpen]) {
            /*
             * if the current session has no publish permission we need to reauthorize
             */
            if ([[[FBSession activeSession]permissions]indexOfObject:@"publish_actions"] == NSNotFound) {
                [[FBSession activeSession] reauthorizeWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                                             defaultAudience:FBSessionDefaultAudienceOnlyMe
                                                           completionHandler:^(FBSession *session, NSError *error) {
                                                               action();
                                                           }];
            }else{
                action();
            }
        }else{
            /*
             * open a new session with publish permission
             */
            [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                               defaultAudience:FBSessionDefaultAudienceOnlyMe
                                                  allowLoginUI:YES
                                             completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                                 if (!error && status == FBSessionStateOpen) {
                                                     action();
                                                 }else{
                                                     NSLog(@"error");
                                                 }
                                             }];
        }
    }
    

    【讨论】:

    • 如果您将此代码运行到 'xcode' 4.3 中,则无需添加 Social 和 AdSupport 框架。如果使用 iOS 6,则将这两个框架添加为适用于 iOS 5 的 Optional
    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多