2012-09-19 11 views

उत्तर

140

इस ढांचे कृपया देखें एप्पल के Social Framework Class Reference

अतिरिक्त ट्यूटोरियल पर जानकारी के लिए:

  1. http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
  2. http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
  3. http://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
  4. https://developer.apple.com/videos/wwdc/2012/?id=306

इस उदाहरण के लिए, हम SLComposeViewController के SLServiceTypeFacebook का उपयोग करेंगे। आप ट्विटर या SinaWeibo उपयोग करना चाहते हैं तो बस निम्न में से एक के लिए SLServiceType बाहर बदलने के लिए:

  • SLServiceTypeFacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

IOS 6 बना दिया है यह बहुत आसान सीधे पोस्ट करने के लिए फेसबुक, ट्विटर या सिना वेबो SLComposeViewController का उपयोग कर। यह आईओएस 5 के TWTweetComposeViewController के समान ही काम करता है।

सबसे पहले, आपके व्यू कंट्रोलर की हेडर फ़ाइल (.h) #import सोशल फ्रेमवर्क और अकाउंट फ्रेमवर्क में।

#import <Social/Social.h>

#import <Accounts/Accounts.h>

यहाँ हम एक सरल UIButton और एक IBAction हम बाद में उस बटन के लिए लिंक और एक void (sharingStatus) जो जांच करने के लिए उपयोग किया जाएगा कि चयनित साझा करने वाली सेवा है जाएगा कि घोषणा करेंगे उपलब्ध।

@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton; 
- (IBAction)facebookPost:(id)sender; 
- (void)sharingStatus; 
@end 

@implementation ViewController 

फिर, अपने कार्यान्वयन फ़ाइल (मीटर) में, हम (sharingStatus) शून्य है कि हम हेडर फाइल में घोषित लागू करने से शुरू करेंगे। SharingStatus SLComposeViewController के isAvailableForServiceType बूल का उपयोग करता है ताकि आप लौट सकें कि आप इसके तर्क में निर्दिष्ट सेवा में पोस्ट कर सकते हैं या नहीं। इस मामले में, हम सेवा प्रकार SLServiceTypeFacebook का उपयोग करेंगे। यदि सेवा उपलब्ध है तो पोस्ट बटन 1.0f के अल्फा मान के साथ सक्षम किया जाएगा, और यदि सेवा उपलब्ध नहीं है तो बटन को इसके अल्फा मान को 0.5f पर सेट कर दिया जाएगा।

- (void)sharingStatus { 
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
     NSLog(@"service available"); 
     self.easyFacebookButton.enabled = YES; 
     self.easyFacebookButton.alpha = 1.0f; 
    } else { 
     self.easyFacebookButton.enabled = NO; 
     self.easyFacebookButton.alpha = 0.5f; 
    } 
} 

यहाँ हम IBAction कि संगीतकार अप कॉल करेंगे स्थापित करेगा। अच्छी प्रैक्टिस के लिए, हम उपलब्ध सेवा प्रकार के लिए संगीतकार को कॉल करने से बचने के लिए isAvailableForServiceType फिर से जांचेंगे। (आखिरी चेक के दौरान कुछ गड़बड़ हुई, या अगर पोस्ट बटन और कंपोज़र्स को सभी/इनिट टैप करने के बीच किसी दूसरे के अंश में उपलब्धता बदल गई है। नीचे दिया गया कोड टेक्स्ट के साथ एक फेसबुक संगीतकार शीट प्रदर्शित करने के लिए स्थापित किया गया है, एक छवि, और एक लिंक। यह क्रिया संगीतकार के रद्द और किए गए परिणामों के लिए एक समापन हैंडलर का भी उपयोग करती है।

- (IBAction)facebookPost:(id)sender { 

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 

     SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

     [mySLComposerSheet setInitialText:@"iOS 6 Social Framework test!"]; 

     [mySLComposerSheet addImage:[UIImage imageNamed:@"myImage.png"]]; 

     [mySLComposerSheet addURL:[NSURL URLWithString:@"http://stackoverflow.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"]]; 

     [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 

      switch (result) { 
       case SLComposeViewControllerResultCancelled: 
        NSLog(@"Post Canceled"); 
        break; 
       case SLComposeViewControllerResultDone: 
        NSLog(@"Post Sucessful"); 
        break; 

       default: 
        break; 
      } 
     }]; 

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

viewWillAppear हम ACAccountStoreDidChangeNotification को एक पर्यवेक्षक रजिस्टर करेंगे तो आवेदन अधिसूचित किया जा सकता है जब खाते की जानकारी बदल जाता है। इस पर्यवेक्षक को viewDidDisappear में हटा दिया जाएगा।

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sharingStatus) name:ACAccountStoreDidChangeNotification object:nil]; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
    [[NSNotificationCenter defaultCenter] removeObserver:ACAccountStoreDidChangeNotification]; 
} 

और अंत में, इंटरफ़ेस बिल्डर को खोलने और एक UIButton जो पोस्ट बटन हो जाएगा जोड़ें। फिर कनेक्शन इंस्पेक्टर में IBOutlet और IBAction लिंक करें जिसे हमने पहले बटन पर बनाया था, और यही वह है! हो गया!

enter image description here

+1

हाय, एक अच्छा जवाब है, कर सकते हैं था, हालांकि मैं छोटे संदेह है, हम भी मामले उपयोगकर्ता का ट्विटर/फेसबुक खाते में मौजूद लॉग इन इंटरफेस सेट नहीं है ऊपर? –

+3

@AbhinandanSahgal नहीं, इस कक्षा के साथ नहीं। हालांकि, सही तरीके से काम करते समय संगीतकार यह पता लगाएगा कि उपयोगकर्ता लॉग इन नहीं है और उचित सेवा के लिए उन्हें अपने खाते में लॉग इन करने के लिए सेटिंग में ले जाने के लिए एक अलर्ट प्रस्तुत करता है। –

+0

क्या आप उन्हें सेटिंग्स में ले जाने के लिए नमूना डाल सकते हैं? –

25

बस फेसबुक पर साझा करने के लिए इस कोड का उपयोग।

SLComposeViewController *controllerSLC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
[controllerSLC setInitialText:@"First post from my iPhone app"]; 
[controllerSLC addURL:[NSURL URLWithString:@"http://www.appcoda.com"]]; 
[controllerSLC addImage:[UIImage imageNamed:@"test.jpg"]]; 
[self presentViewController:controllerSLC animated:YES completion:Nil]; 

यदि आप ट्विटर के लिए यह चाहते हैं तो बस SLServiceTypeTwitter को बदलें।

+0

आपके कोड के साथ सेटिंग पृष्ठ समस्या प्राप्त कर रहा हूं। – sabir

+0

@ सबीर मैं तुम्हें नहीं मिला था। क्या आप इसे समझा सकते हैं? –

+1

जब आपके डिवाइस में फेसबुक खाता खाली होता है तो यह सेटिंग्स के साथ अलर्ट दिखाता है और जब मैं सेटिंग्स बटन पर क्लिक करता हूं तो बटन को रद्द कर देता है, इसे सेटिंग्स पृष्ठ पर जाना चाहिए, जो आईओएस 6.01 तक ठीक काम कर रहा है लेकिन आईओएस 7 सेटिंग्स बटन में मुझे नहीं ले जाता सेटिंग्स पेज.तो क्या आपको इस – sabir

13

सुरक्षित SLComposeViewController उपयोग की

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 
    { 
     SLComposeViewController *fbPost = [SLComposeViewController 
               composeViewControllerForServiceType: SLServiceTypeFacebook]; 
     [fbPost setInitialText:@"Text You want to Share"]; 
     [fbPost addImage:[UIImage imageNamed:@"shareImage.png"]]; 
     [self presentViewController:fbPost animated:YES completion:nil]; 
     [fbPost setCompletionHandler:^(SLComposeViewControllerResult result) { 
      switch (result) { 
       case SLComposeViewControllerResultCancelled: 
        NSLog(@"Post Canceled"); 
        break; 
       case SLComposeViewControllerResultDone: 
        NSLog(@"Post Sucessful"); 
        break; 
       default: 
        break; 
      } 
      [self dismissViewControllerAnimated:YES completion:nil]; 
     }]; 
    } 
संबंधित मुद्दे