मैं चहचहाना साझा करने कोड का टुकड़ा है कि iOS6 के लिए ठीक काम करता है का एक टुकड़ा है, लेकिन मैं iOS5 भी करने के लिए अच्छी तरह से पीछे हटना आवेदन की आवश्यकता है ...आईओएस 6 - सोशल फ्रेमवर्क - आईओएस 5 के लिए TWCweetComposeViewController को SLComposeViewController फ़ॉलबैक कैसे करता है?
यह इस तरह दिखता है:
- (void) shareOnTwitter
{
if([SLComposeViewController instanceMethodForSelector:@selector(isAvailableForServiceType)] != nil)
{
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
NSLog(@"twitter available");
SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[composeViewController setInitialText:self.sharingText];
[self.sharingController presentViewController:composeViewController animated:YES completion:nil];
}
else
{
NSLog(@"twitter not available!");
}
}
else
{
// SLComposeViewController not available, this is most likely <iOS6, what to do here?
}
}
अतः
, मैं आईओएस 5 में अच्छी तरह से कैसे गिर सकता हूं (मुझे लगता है कि मुझे TWTweetComposeViewController की आवश्यकता है) ताकि मैं आईओएस 5 में देशी ट्विटर का भी उपयोग कर सकूं?
संपादित करें: अंत में मैं अभी भी TWTweetComposeViewController पर फ़ॉलबैक करने के लिए आलसी हूं इसलिए मैंने इस अनुक्रम में बस फॉलबैक करने का निर्णय लिया: आईओएस 6 मूल ट्वीट -> स्थापित ट्विटर ऐप -> वेब यूआरएल। इस समारोह मैं एक साथ रखा है, आशा है कि यह मदद करता है किसी को:
+(BOOL)isSocialFrameworkAvailable
{
// whether the iOS6 Social framework is available?
return NSClassFromString(@"SLComposeViewController") != nil;
}
- (void) shareOnTwitterWithText:(NSString*)text andURL:(NSString*)url andImageName:(NSString*)imageName
{
// prepare the message to be shared
NSString *combineMessage = [NSString stringWithFormat:@"%@ %@", text, url];
NSString *escapedMessage = [combineMessage stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString *appURL = [NSString stringWithFormat:@"twitter://post?message=%@", escapedMessage];
if([SocialManager isSocialFrameworkAvailable] && [SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
// user has setup the iOS6 twitter account
SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[composeViewController setInitialText:text];
if([UIImage imageNamed:imageName])
{
[composeViewController addImage:[UIImage imageNamed:imageName]];
}
if(url)
{
[composeViewController addURL:[NSURL URLWithString:url]];
}
[self.sharingController presentViewController:composeViewController animated:YES completion:nil];
}
else
{
// else, we have to fallback to app or browser
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:appURL]])
{
// twitter app available!
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];
}
else
{
// worse come to worse, open twitter page in browser
NSString *web = [NSString stringWithFormat:@"https://twitter.com/intent/tweet?text=%@", escapedMessage];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:web]];
}
}
}
धन्यवाद क्रिस! आपके उत्तर ने मुझे पुष्टि की कि मुझे ट्विटर फ्रेमवर्क शामिल करना होगा जो अब मेरे नवीनतम एक्सकोड संस्करण में उपलब्ध नहीं है .. मुझे इसे प्राप्त करने की ज़रूरत है .. धन्यवाद! – mkto
@chris क्या आप आईओएस 6 में TWTweetComposeViewController का उपयोग कर सकते हैं या IOS6 में SLComposeViewController का उपयोग करने से क्या लाभ हैं? –
मुझे नहीं पता कि कोई फायदा है या नहीं, और मैं 'SLComposeViewController 'शर्त लगाने के लिए तैयार हूं, बस' TWTweetComposeViewController' को लपेटता हूं। साथ ही, मैं कल्पना कर सकता हूं कि ऐप्पल 'SLComposeViewController' के पक्ष में' TWTweetComposeViewController' को अंततः हटा देगा। – chris