2012-09-24 3 views
2

Je me demande s'il est possible de poster quelque chose sur le mur facebook d'un utilisateur en utilisant SLComposeViewController mais sans afficher la feuille de partage/le dialogue?poster sur facebook sans dialogue ios 6

Voici le code que je utilise:

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]; 

    } 

Merci à l'avance.

+0

Êtes-vous obligé d'utiliser le framework Apple? – leo

Répondre

-1

cela est possible dans facebook-ios-sdk 3.0. here

Je fais le partage avec ce code. J'ai appelé cette méthode lorsque l'utilisateur clique sur le bouton de partage et qu'il n'y a pas de dialogue avec l'utilisateur qu'il publie directement sur le mur de l'utilisateur. params est un paramètre que le partage inclut.

2

Importez le cadre social:

#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

Ici, je suis la réponse, pour l'affichage image data et url ensemble, nous devons ajouter sociale. cadre, ce cadre est disponible dans iOS6.

Ajoutez simplement le Social.framework dans votre projet et ajoutez le code soufflé.

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

Ajouter ci-dessous dans votre code ViewController et l'importation ci-dessous cadre.

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 ?? "")") 
      } 
     } 
    } 
Questions connexes