2012-09-21 6 views
14

मैं iOS6 निम्नलिखित की तरह में नए फेसबुक एकीकरण का उपयोग कर रहा हूँ:आईओएस 6 फेसबुक: अगर उपयोगकर्ता ने फेसबुक कॉन्फ़िगर नहीं किया है तो क्या करें?

SLComposeViewController *fbController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
    SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){ 

     [fbController dismissViewControllerAnimated:YES completion:nil]; 

     switch(result){ 
      case SLComposeViewControllerResultCancelled: 
      default: 
      { 
       NSLog(@"Cancelled....."); 

      } 
       break; 
      case SLComposeViewControllerResultDone: 
      { 
       NSLog(@"Posted...."); 
      } 
       break; 
     }}; 

    //[fbController addImage:[UIImage imageNamed:@"1.jpg"]]; 
    [fbController setInitialText:@"Test message"]; 
    [fbController addURL:[NSURL URLWithString:self.asset.url]]; 
    [fbController setCompletionHandler:completionHandler]; 
    [self presentViewController:fbController animated:YES completion:nil]; 
} else { 
    NSLog(@"no facebook setup"); 
} 

समस्या यहाँ है, मैं Facebook में लॉग इन किया जा रहा है बिना यह परीक्षण कर रहा हूँ और सभी मैं लॉग संदेश है।

** अजीब बात है, मैं सिम्युलेटर में संवाद, लेकिन नहीं उपकरण प्राप्त! **

मैं उपयोगकर्ता एक चेतावनी है कि उन्हें बताता है कैसे दिखा सकते हैं कि वे फेसबुक पर लॉग इन करने की जरूरत है ? मैंने सिस्टम अलर्ट के स्क्रीनशॉट देखे हैं, लेकिन मुझे किसी कारण से यह नहीं मिल रहा है। मैंने क्या गल्त किया है?

उत्तर

28

[SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook] के लिए चेक निकाला जा रहा है मेरे लिए समस्या का समाधान हो।

+0

डिवाइस के लिए भी तय है? – msk

+0

हाँ जब मैंने इस चेक को हटा दिया, तो सिम्युलेटर में डिवाइस में भी चेतावनी दी गई। – msk

+0

हाँ, डिवाइस के लिए भी तय है। –

1

मुझे नहीं लगता कि आपको कोई सिस्टम अलर्ट मिलेगा (मुझे यकीन नहीं है लेकिन ट्विटर अनुभव पर आधारित है)। हालांकि मैंने इसे हाल के ब्लॉग/वेब पोस्ट में देखा है लेकिन यह मेरे लिए भी काम नहीं कर रहा है। मैं इस तरह के मामले में सुझाव देता हूं कि आपको उपयोगकर्ता के एफबी क्रेडेंशियल्स (कस्टम डायलॉग या एफबीडीअलॉग) के लिए पूछना चाहिए और आईपैड में एफबी खाता जोड़ना चाहिए। नीचे दिया गया कोड परीक्षण नहीं किया गया है लेकिन आप एक विचार प्राप्त कर सकते हैं। मैं ट्विटर & के लिए समान काम कर रहा हूं जो मेरे ऐप्स में ठीक काम कर रहा है।

ACAccountStore *store = [[ACAccountStore alloc] init] ; 
    ACAccountType *fbType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 
    [store requestAccessToAccountsWithType:fbType options:[NSDictionary dictionaryWithObjectsAndKeys:kAppID,ACFacebookAppIdKey, nil] completion:^(BOOL granted, NSError *error) { 
     if(YES) { 
      ACAccount *fbAccount = [[ACAccount alloc] initWithAccountType:[store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]]; 

      ACAccountCredential *outhCredential = [[ACAccountCredential alloc] initWithOAuth2Token:[appDelegate.facebook accessToken] refreshToken:refesrhToken expiryDate:[appDelegate.facebook expirationDate]]; 


      fbAccount.credential = outhCredential; 

      [store saveAccount:fbAccount withCompletionHandler:^(BOOL success, NSError *error) { 
       if(success) 
       { 
        [self performSelectorOnMainThread:@selector(showFBPostSheet) withObject:nil waitUntilDone:NO]; 
       } 
      }]; 

      [outhCredential release]; 
      [fbAccount release]; 
      [store release]; 
     } 
     // Handle any error state here as you wish 
    }]; 
+0

मुझे वास्तव में एहसास हुआ कि मुझे सिम्युलेटर में संवाद मिलता है, लेकिन डिवाइस नहीं। कितना अजीब। –

7

ऐसा लगता है कि [SLComposeViewController isAvailableForServiceType:] सिम्युलेटर में सच है, भले ही आपने वहां कोई खाता सेट नहीं किया हो।