2012-09-24 4 views
2

SLComposeViewController를 사용하여 사용자의 Facebook 북 벽에 게시 할 수 있지만 공유 시트/대화 상자를 표시하지 않으면 궁금합니다. 사전에대화창이없는 페이스 북에 게시 6

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 

     SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

     SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){ 
      if (result == SLComposeViewControllerResultCancelled) { 

       NSLog(@"Cancelled"); 

      } else 

      { 
       NSLog(@"Done"); 
      } 

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

     [controller setInitialText:eventInfoToFacebook]; 

     [self presentViewController:controller animated:YES completion:Nil]; 

    } 

감사 :

다음

내가 사용하고있는 코드입니다.

+0

Apple 프레임 워크를 사용해야합니까? – leo

답변

-1

facebook-ios-sdk 3.0에서 가능합니다. here

이 코드를 공유하고 있습니다.

[FBRequestConnection startWithGraphPath:@"me/feed" 
          parameters:params 
          HTTPMethod:@"POST" 
         completionHandler:^(FBRequestConnection *connection, 
              NSDictionary * result, 
              NSError *error) { 
          if (error) { 
           NSLog(@"Error: %@", [error localizedDescription]); 
          } else { 

           } 
         }]; 

사용자가 공유 버튼을 클릭하고 사용자 벽에 직접 게시하는 사용자와 대화 할 때이 메서드를 호출했습니다. params는 공유에 포함되는 매개 변수입니다.

2

가져 오기 사회 프레임 워크 :

#import <Social/Social.h> 

- 여기

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 

     SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

     SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){ 
      if (result == SLComposeViewControllerResultCancelled) { 

       NSLog(@"Cancelled"); 

      } else 

      { 
       NSLog(@"Done"); 
      } 

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

     [controller setInitialText:@"Test Post from mobile.safilsunny.com"]; 
     [controller addURL:[NSURL URLWithString:@"http://www.mobile.safilsunny.com"]]; 
     [controller addImage:[UIImage imageNamed:@"fb.png"]]; 

     [self presentViewController:controller animated:YES completion:Nil]; 

    } 
    else{ 
     NSLog(@"UnAvailable"); 
    } 

} 

/

//Deprecated in iOS6 

    ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

    [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { 

     ACAccount *account = [[ACAccount alloc] initWithAccountType:accountType]; 
     NSLog(@"%@, %@", account.username, account.description); 
    }]; 
1

나는 image data을 게시, 답을 얻고 url 함께 우리 사회를 추가해야합니다. 이 프레임 워크는 iOS6에서 사용할 수 있습니다.

Social.framework을 프로젝트에 추가하고 블로우 코드를 추가하기 만하면됩니다.

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 
{ 

    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){ 
     if (result == SLComposeViewControllerResultCancelled) { 

      NSLog(@"ResultCancelled"); 

     } else 

     { 
      NSLog(@"Success"); 
     } 

     [controller dismissViewControllerAnimated:YES completion:Nil]; 
    }; 

    controller.completionHandler =myBlock; 

    [controller addURL:[NSURL URLWithString:@"https://itunes.apple.com/us/app/social-checkin/id504791401?mt=8"]]; 

    if (encoded_ImageData == nil) { 

     [controller addImage:[UIImage imageNamed:@"No_ImageFound.png"]]; 

    } 
    else 
    { 

    [controller addImage:[UIImage imageWithData:encoded_ImageData]]; 

    } 

    NSString *businessName; 

    //Set business name string to be passed on facebook 
    if (m_BusinessNameString == nil || [m_BusinessNameString isEqualToString:@""]) 
    { 
     businessName = @"Business name not specified!"; 
    } 
    else 
    { 
     businessName = [m_BusinessNameString uppercaseString]; 
    } 

    NSString *nameString = [NSString stringWithFormat:@"CHECKED IN @"]; 

    //user has checked in with his friends if sc-merchant 
    NSString *friendsString; 

    if ([checkedFriendsNameArray count] > 0) 
    { 
     NSMutableString *checkedFriendsTempStr = [[NSMutableString alloc] init]; 

     for (NSMutableString *checkedStr in checkedFriendsNameArray) 
     { 

      [checkedFriendsTempStr appendFormat:[NSString stringWithFormat:@"%@,",checkedStr]]; 

      friendsString = [NSString stringWithFormat:@"WITH %@",checkedFriendsTempStr]; 
     } 
    } 
    else 

    { 
     friendsString = [NSString stringWithFormat:@"WITH NO FRIENDS"]; 

    } 

    NSString *fname= [[NSUserDefaults standardUserDefaults] valueForKey:@"userfname"]; 
    NSString *lname= [[NSUserDefaults standardUserDefaults] valueForKey:@"userlname"]; 

    NSString *name=[fname stringByAppendingString:[NSString stringWithFormat:@"%@",lname]]; 


    NSString *main_TextString =[NSString stringWithFormat:@"%@ \n %@ %@ %@ %@",upperCaseStatusString,name,nameString,businessName,friendsString]; 

    [controller setInitialText:main_TextString]; 

    [self presentViewController:controller animated:YES completion:Nil]; 

} 
else{ 

    NSLog(@"UnAvailable"); 
} 
1

아래 코드를 ViewController에 추가하고 아래 프레임 워크를 가져옵니다.

import FBSDKCoreKit 
import FBSDKLoginKit 
import FBSDKShareKit 

@IBAction func btnPostClick(_ sender: Any) 
{ 
     if (FBSDKAccessToken.current() != nil) 
     { 
      if FBSDKAccessToken.current().hasGranted("publish_actions"){ 
       postOnFB() 
      } 
      else 
      { 
       let loginManager = FBSDKLoginManager() 
       loginManager.logIn(withPublishPermissions: ["publish_actions"], from: self, handler: { (result, error) in 
        if error == nil{ 
         self.postOnFB() 
        } 
        else{ 
         print(error?.localizedDescription ?? "") 
        } 
       }) 
      } 
     } 
     else 
     { 
      let loginManager = FBSDKLoginManager() 
      loginManager.logIn(withPublishPermissions: ["publish_actions"], from: self, handler: { (result, error) in 
       if error == nil{ 
        self.postOnFB() 
       } 
      }) 
     } 
    } 

func postOnFB() 
    { 
     FBSDKGraphRequest(graphPath: "me/feed", parameters: ["message": "YOUR MESSAGE"], httpMethod: "POST").start { (connection, result, error) in 
      if error == nil{ 
       print("post id \(result ?? "")") 
      } 
      else{ 
       print("error is \(error?.localizedDescription ?? "")") 
      } 
     } 
    } 
관련 문제