2012-09-20 10 views
24

का उपयोग करके उद्देश्य-सी में आईओएस 6 पर फेसबुक पर पोस्ट करने के लिए कैसे करें मैं जानना चाहता हूं कि एक्सकोड 4.5 पर नए ढांचे का उपयोग करके आईओएस 6 पर फेसबुक पर स्टेटस संदेश कैसे पोस्ट करना है। धन्यवाद! :)ACAccountStore क्लास

+0

ट्यूटोरियल का अच्छा सेट यहाँ नहीं है: http://developers.facebook.com/docs/getting-started/getting-started-with-the-ios-sdk/ –

+0

नहीं, मैं मतलब आईओएस 6 पर नए ढांचे का उपयोग करना। – jaytrixz

+1

अधिक जानकारी के लिए आप सामाजिक ढांचे का उपयोग कर सकते हैं http://kmithi.blogspot.in/2012/10/integrating-facebook-and-twitter-in-ios.html – mithilesh

उत्तर

75

संदेश पोस्ट करना इतना आसान है। यह लगभग ट्विटर फ्रेमवर्क के साथ है।

सबसे पहले आप फ़्रेमवर्क आयात करने के लिए है: सामाजिक और लेखा

#import <Social/Social.h> 
#import <Accounts/Accounts.h> 

अपने ज फ़ाइल में:

SLComposeViewController *mySLComposerSheet; 

यह कोड आपके मीटर फाइल में अपनी कार्रवाई के अंदर शामिल किया जाना है:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) //check if Facebook Account is linked 
    { 
     mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller 
     mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; //Tell him with what social platform to use it, e.g. facebook or twitter 
       [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"Test",mySLComposerSheet.serviceType]]; //the message you want to post 
     [mySLComposerSheet addImage:yourimage]; //an image you could post 
     //for more instance methods, go here: https://developer.apple.com/documentation/social/slcomposeviewcontroller#//apple_ref/doc/uid/TP40012205 
     [self presentViewController:mySLComposerSheet animated:YES completion:nil]; 
    } 
    [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 
     NSString *output; 
     switch (result) { 
      case SLComposeViewControllerResultCancelled: 
       output = @"Action Cancelled"; 
       break; 
      case SLComposeViewControllerResultDone: 
       output = @"Post Successful"; 
       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]; 
    }]; 
+0

@ ब्लेड थान। लेकिन मैं "TWRequest" जैसे कार्यपत्रक के बिना संदेश साझा करना चाहता हूं तो फेसबुक में प्रक्रिया क्या है? – Hitarth

+0

@ ब्लेड ग्रेट suggetion। यह अच्छा काम कर रहा है लेकिन मेरे पास एक प्रश्न है जब मैं दो पॉपअप प्राप्त करने के बजाय उसी संदेश पर वापस पोस्ट करता हूं। 1. पोस्ट सफल और 2. पोस्ट नहीं भेजा जा सकता क्योंकि फेसबुक से कनेक्शन विफल हो जाता है। मैं केवल एक पॉपअप चाहता हूं ताकि उपयोगकर्ता को विचार मिल सके। इन दो पॉपअप उपयोगकर्ता से भ्रमित हो रहा है कि पोस्ट सफलता या नहीं। अगर आपको कोई विचार है तो कृपया मुझे सुझाव दें। – Hitarth

+1

@ ब्लेड क्या हम "आईओएस के माध्यम से लिंक साझा कर सकते हैं" को "MyAppName के माध्यम से लिंक साझा करने" के लिए बदल सकते हैं? – Hitarth

1

और क्या मैं, क्या करने के लिए जब मैं सिर्फ एक चेतावनी के मामले में पोस्ट सफल रहा प्राप्त करना चाहते है, और कुछ भी नहीं जब उपयोगकर्ता ने पोस्ट रद्द कर दिया?

और दुर्भाग्य से यह ट्विटर के लिए ठीक से काम नहीं करता है ... यह अब ट्वीटशीट को खारिज नहीं करता है। यहां मेरा कोड है:

if(NSClassFromString(@"SLComposeViewController") != nil) 
{ 

     mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller 
     mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social plattform to use it, e.g. facebook or twitter 
     [mySLComposerSheet setInitialText:[NSString stringWithFormat:story.title,mySLComposerSheet.serviceType]]; //the message you want to post 
     [mySLComposerSheet addURL:[NSURL URLWithString:story.link]]; 
     //for more instance methodes, go here:https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40012205 
     [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 
      NSString *output; 
      switch (result) { 
       case SLComposeViewControllerResultCancelled: 
        output = NSLocalizedStringFromTable(@"As it seems you didn't want to post to Twitter", @"ATLocalizable", @""); 
        break; 
       case SLComposeViewControllerResultDone: 
        output = NSLocalizedStringFromTable(@"You successfully posted to Twitter", @"ATLocalizable", @""); 
        break; 
       default: 
        break; 
      } //check if everything worked properly. Give out a message on the state. 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
      [alert show]; 
     }]; 
     [self presentViewController:mySLComposerSheet animated:YES completion:nil]; 
0

ठीक है दोस्तों, इसलिए मैंने मूल पोस्ट tweaked, आईओएस 6/7 के लिए काम करता है। फेसबुक के लिए सेवा टाइप, अलर्ट शीर्षक और संदेश बदलें। का आनंद लें!

- (IBAction)tweetMessage:(id)sender { 


    if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) //check if Facebook Account is linked 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unable to Tweet!" message:@"Please login to Twitter in your device settings." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
     [alert show]; 
     return; 
    } 
    //self.mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller 
    self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
    [self.mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I found this Thing, check it out at this Place:\n %@ \n", [self someplace]]]; 
    [self.mySLComposerSheet addImage:self.photos.firstObject]; 

    [self presentViewController:self.mySLComposerSheet animated:YES completion:nil]; 
    //} 

    [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 
     NSString *output; 
     switch (result) { 
       case SLComposeViewControllerResultCancelled: 
        output = @"Action Cancelled"; 
        break; 
       case SLComposeViewControllerResultDone: 
        output = @"Post Successfull"; 
        break; 
       default: 
        break; 
     } //check if everything worked properly. Give out a message on the state. 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
     [alert show]; 
    }]; 
} 
0

इस प्रकार मैं वास्तव में अपने ऐप में इसका उपयोग कैसे करता हूं। चिकनी और नियंत्रक को कड़ी मेहनत करने देता है।

- (IBAction)postToFacebook:(id)sender { 
    if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
     NSLog(@"log output of your choice here"); 
    } 
    // Facebook may not be available but the SLComposeViewController will handle the error for us. 
    self.mySLComposerSheet = [[SLComposeViewController alloc] init]; 
    self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
    [self.mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I found this Thing, check it out at SomeWhere:\n %@ \n", [self someURLString]]]; 
    [self.mySLComposerSheet addImage:self.photos.firstObject]; //an image you could post 

    [self presentViewController:self.mySLComposerSheet animated:YES completion:nil]; 

    [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 
     NSString *output; 
     switch (result) { 
       case SLComposeViewControllerResultCancelled: 
        output = @"Action Cancelled"; 
        break; 
       case SLComposeViewControllerResultDone: 
        output = @"Post Successfull"; 
        break; 
       default: 
        break; 
     } 
     if (![output isEqualToString:@"Action Cancelled"]) { 
       // Only alert if the post was a success. Or not! Up to you. 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
       [alert show]; 
     } 
    }]; 
} 
1
- (IBAction)btn_facebook:(id)sender { 

    SLComposeViewController *facebookcomposer = 
     [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
    [facebookcomposer setInitialText:@"This is just a test"]; 
    [facebookcomposer addURL:[NSURL URLWithString:@"http://www.google.com"]]; 
    [facebookcomposer addImage:[UIImage imageNamed:@"images.jpg"]]; 

    [self presentViewController:facebookcomposer animated:YES completion:nil]; 

    [facebookcomposer setCompletionHandler:^(SLComposeViewControllerResult result) 
    { 
     switch (result) 
     { 
      case SLComposeViewControllerResultDone: 
       NSLog(@"done"); 
       break; 
      case SLComposeViewControllerResultCancelled: 
       NSLog(@"cancelled"); 
       break; 

      default: 
      break; 
     } 

    }]; 

} 

- (IBAction)btn_twitter:(id)sender { 

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { 
     SLComposeViewController *twitter = 
      [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

     [twitter setInitialText:@"this is just a test"]; 
     [twitter addURL:[NSURL URLWithString:@"http://www.google.com"]]; 
     [twitter addImage:[UIImage imageNamed:@"images.jpg"]]; 
     [self presentViewController:twitter animated:YES completion:nil]; 
    } else { 
     NSLog(@"it is not configured"); 
    } 
} 
संबंधित मुद्दे