集成旧版Xcode的Facebook SDK以支持iOS 5和iOS 6

问题描述:

我仍在使用XCode 4.3.2和iOS 5.1基本SDK。我想要实现的是整合Facebook API for iOS 5.0+设备。只是基本的功能,如发布代表和获取基本的用户信息。集成旧版Xcode的Facebook SDK以支持iOS 5和iOS 6

我假设哪个Facebook SDK在iOS 5上工作,将在iOS 6上工作,但我不确定这一点。

作为Facebook整合的新手,任何人都可以在这个问题上找到点子。 (因为我正在开发项目,所以升级XCode和iOS SDK不是一种选择)

  • 我应该查看哪个iOS SDK?
  • 我可以同时支持iOS 5和 6,基本SDK 5.1和XCode 4.3?
  • 是否有支持iOS版本的API?
  • Facebook集成的必备条件?

首先你读这篇文章从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"); 
              } 
             }]; 
    } 
} 
+0

首先,我们没有社交和AdSupport框架? – Bartu 2013-03-19 22:14:30

+0

如果您将此代码运行到'xcode'4.3中,则无需添加Social和AdSupport框架。如果使用iOS 6,则将这两个框架添加为适用于iOS 5的Optional – 2013-03-20 05:05:03