2017-07-03 16 views
9

मेरी प्रोजेक्ट में, मैं हमेशा तृतीय पक्ष ऐप्स के साथ सामग्री साझा करने के लिए SLComposeViewController का उपयोग करता हूं, लेकिन अब, जब मैं अपने आईफोन को आईओएस 11 बीटा में अपडेट करता हूं, तो यह अब काम नहीं करता है। और SLComposeViewControllerCompletionHandler हमेशा कॉलबैक SLComposeViewControllerResultCancelled। क्यों?आईओएस में "SLComposeViewController" के बारे में 11 बीटा

उत्तर

9

आईओएस 11 ने सेटिंग ऐप के माध्यम से तीसरे पक्ष के खातों (जैसे फेसबुक और ट्विटर) तक पहुंच को हटा दिया। मैं वर्तमान में एक ही चीज़ के साथ संघर्ष कर रहा हूं।

अब आपको तीसरे पक्ष से एसडीके के साथ कार्यक्षमता को एकीकृत करना होगा। मैं अभी तक है कि कैसे अन्य सामाजिक नेटवर्क विस्थापित करने के बारे में विशेष निर्देशों के लिए

https://dev.twitter.com/twitterkit/ios/migrate-social-framework

, लेकिन यह यह उनके 3 पार्टी एसडीके की आवश्यकता होगी कहना सुरक्षित -: ट्विटर लेने के लिए कदम के बारे में यहाँ एक प्रवास पृष्ठ है।

कोई और अधिक आसान बाहर-द-बॉक्स सामाजिक बंटवारे :-(

+1

SLComposeViewController मेरे लिए ठीक काम कर रहा है, जैसा कि पहले था। मैथ्यूस द्वारा पोस्ट किया गया जवाब देखें। – Leon

10

मैं आईओएस 11 में SLComposer के संबंध में समस्या थी लेकिन मैं सिर्फ लाइन है कि जाँच करता है हटा दिया और जाहिरा तौर पर खुद एसडीके validacoes बनाता है । मेरे लिए आंतरिक रूप से

निकालें इस लाइन किसी भी SLServiceType के लिए कार्य करता है:

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 

तो, अपने तर्क का विकास मेरी मामले में:।

SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

     [mySLComposerSheet setInitialText:@"#myInitialTextIsHere"]; 
     [mySLComposerSheet addURL:[NSURL URLWithString:strURL]]; 

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

मुझे उम्मीद है कि मैंने मदद की है!

+0

यह काम करता है - यदि उपयोगकर्ता लॉग इन नहीं है, तो संगीतकार अभी भी पॉप अप करेगा लेकिन उसके बाद "आपको लॉग इन करने की आवश्यकता है" चेतावनी प्रदर्शित करता है। – davedavedave

+0

क्या यह समाधान आईओएस 11 पर तैनाती लक्ष्य निर्धारित करते समय (आईफोन) सिम्युलेटर में लोगों के लिए काम कर रहा है? यह क्रैश या कुछ भी नहीं है लेकिन मुझे आईओएस 10 और उसके बाद के लिए प्राप्त की जाने वाली एक्शनशीट नहीं मिलती है, और कंसोल में यह 'व्यूडिडएपियर' कहता है, लेकिन रिमोट वीसी असफल हो रहा है, और 'शीट प्रस्तुत नहीं किया जा रहा है, समयपूर्व समापन को कॉल कर रहा है'? –

+0

अभी भी मेरे लिए ट्विटर के साथ काम कर रहा है जैसा कि यहां दिखाया गया है। आईपैड एयर और आईओएस 11.2.2 पर चल रहा है। –

2

आईओएस 11 इस लाइन के लिए:

([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 

हमेशा NO

लौटा रहा है मैं चेक के साथ प्रतिस्थापित करता है, तो उपयोगकर्ता के साथ स्थापित फेसबुक ऐप है:

static NSString *const canOpenFacebookURL = @"fbauth2"; 

+ LSApplicationQueriesSchemes में जोड़ने प्लेस्ट

-(BOOL)isFacebookAppInstalled { 
    NSURLComponents *components = [[NSURLComponents alloc] init]; 
    components.scheme = canOpenFacebookURL; 
    components.path = @"/"; 
    return [[UIApplication sharedApplication] 
      canOpenURL:components.URL]; 
} 

और फिर बस SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

हमेशा की तरह

, एक ही कैसे माथिउस डोमिंगोस वर्णित कहते हैं। लेकिन कम से कम आप इस चेक के साथ जानते हैं कि उपयोगकर्ता के पास फेसबुक ऐप इंस्टॉल है।

संबंधित मुद्दे