将twitter集成到iOS 5中,但保持与旧iOS的向后兼容性

时间:2012-05-15 02:08:01

标签: objective-c ios xcode

关于如何将twitter集成到您的应用中,关注这个伟大的tutorial。我知道程序员在iOS 5之前还有其他方式用于集成twitter,但我的问题是:

我的应用程序支持iOS 3.0+,所以如果我只使用iOS 5方式集成twitter,这将如何影响不使用iOS 5的用户?它会为他们工作吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

如果您只为iOS 5用户提供Twitter,那么您可以检查Twitter是否可用:

// Don't forget to import Twitter!
#import <Twitter/Twitter.h>
....
if([TWTweetComposeViewController class] != nil) {
    // your code here
}

此外,请确保在添加Twitter框架时将其设置为可选。

答案 1 :(得分:4)

官方API框架不可行,因为twitter app / integration仅在iOS 5中可用

一个好的解决方案是使用ShareKit,这是一个免费的API,允许您集成Twitter,Facebook和其他社交网络支持。

答案 2 :(得分:2)

你应该研究DETweetComposeViewController。我们为此目的建造了它。它是与TWTweetComposeViewController的iOS4兼容的重新实现。

答案 3 :(得分:0)

使用弱链接和一些代码如下:

 - (void)tweet
{
Class tweeterClass = NSClassFromString(@"TWTweetComposeViewController");

if(tweeterClass != nil) {   
    if([TWTweetComposeViewController canSendTweet]) {
        TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];
        tweetViewController.completionHandler = ^(TWTweetComposeViewControllerResult result) {
            if(result == TWTweetComposeViewControllerResultDone) {

            }
            [self dismissViewControllerAnimated:YES completion:nil];
        };

        [self presentViewController:tweetViewController animated:YES completion:nil];
    } else {
#if !(TARGET_IPHONE_SIMULATOR)
        [self displayAlert:@"You can't send a tweet right now, make sure your device has an internet connection and you have at least one Twitter account setup."];
#else
        NSString *tweetString = [NSString stringWithFormat:@"http://mobile.twitter.com/home?status=%@%@", [self urlEncode:@"Check out this awesome pic: "] ,[self urlEncode:[_blobTweet.shortUrl absoluteString]]];
        NSURL *tweetURL = [NSURL URLWithString:tweetString];
        if ([[UIApplication sharedApplication] canOpenURL:tweetURL]) { 
            [[UIApplication sharedApplication] openURL:tweetURL]; 
        }
#endif
    }
} else {        
    // no Twitter integration could default to third-party Twitter framework

}
}

@end