【问题标题】:How can i use TWRequest for iOS 5 and iOS6我如何在 iOS 5 和 iOS6 上使用 TWRequest
【发布时间】:2013-02-12 21:26:05
【问题描述】:

我正在开发支持 iOS 5 和 6 的 iPhone 应用程序。我想在 Twitter 上分享图片,我发现的方法是使用 iOS 5 中引入的 Twitter 框架。

但是 TWRequest 在 iOS 6 中已被弃用,并被社交框架中的 SLRequest 取代,这在 iOS 5 中不可用。那么我该如何解决这个问题,因为 TWRequest 在 iOS 6 中已被弃用并且 SLRequest 在 iOS 5 中不受支持。 任何线索...

【问题讨论】:

  • 你可以看看这个link
  • 但这仅适用于 iOS 6。iOS 5 支持如何?
  • 对于iOS5,您可以使用TWTweetComposeViewController 以模态方式呈现预建视图。

标签: ios objective-c cocoa twitter


【解决方案1】:

如果您打算使用预构建的SLComposeViewController 以模态方式呈现视图以在 Twitter 上共享,您可以使用类似这样的东西

//Check for Social Framework availability (iOS 6)
if(NSClassFromString(@"SLComposeViewController") != nil){

    if([SLComposeViewController instanceMethodForSelector:@selector(isAvailableForServiceType)] != nil)
    {
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
        {
            NSLog(@"service available");
            SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
            [composeViewController setInitialText:@"Testing Continues"];
            [composeViewController addImage:[UIImage imageNamed:@"test.png"]];
            [self presentViewController:composeViewController animated:YES completion:nil];
        }
        else
        {
            NSLog(@"service not available!");
        }
    }
}

else{
// For TWTweetComposeViewController (iOS 5)  
    if ([TWTweetComposeViewController canSendTweet]) {
        TWTweetComposeViewController *tweetVC = [[TWTweetComposeViewController alloc] init];
        [self presentModalViewController:tweetVC animated:YES];
        [tweetVC setInitialText:@"testing app"];
    } 
}

否则,如果您想创建自己的请求以在 twitter 上分享,请在设备上管理用户帐户后,根据需要创建 SLRequest

NSDictionary *message = @{@"status": @”Test message”};
NSURL *requestURL = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/update.json"];

SLRequest *postRequest = [SLRequest 
            requestForServiceType:SLServiceTypeTwitter
                    requestMethod:SLRequestMethodPOST
                              URL:requestURL 
                       parameters:message];         

【讨论】:

  • 那么在这种情况下,这意味着我必须明确检查,即 if(iOS5) { do this } else if(iOS6) { do this }
  • @abdus:非常接近; Zen 的代码测试的是功能而不是操作系统版本,但效果是一样的:它尽可能使用 6 的视图控制器,否则使用从 5 开始可用的视图控制器。唯一的替代方法是无条件地使用在两者上都可用并且在其中一个上被弃用的那个。
猜你喜欢
  • 2013-07-31
  • 2012-08-27
  • 2012-12-17
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多