2014-01-30 57 views
0

我想在我的iOS應用程序集成Twitter推特的iOS 6和7:發佈推文,而無需用戶的確認

的應用有望支持iOS versions 6.x & 7.x

我想直接發佈tweet,一旦用戶點擊我的UI中的按鈕,而不再詢問SLComposeViewController警報中的確認。

我已經通過以下哪些職位說該怎麼做了,問題是,它們均配置爲iOS 5.x

Stack Overflow Link 1

Stack Overflow Link 2

我去究竟是如何呢?

任何幫助將不勝感激。

+0

什麼問題? iOS 5.x代碼在絕大多數iOS上都可以完美運行。 – Laszlo

+0

不,一些API已經改變了! – footyapps27

回答

0

在兩個鏈接你提到他們使用Twitter的API V1。它被廢棄了很久以前的事:API V1 no longer function相反,你應該使用V1.1使發佈鳴叫的URL將被https://api.twitter.com/1.1/statuses/update.json

此外TWRequest也不贊成使用的iOS 6.0,你應該使用SLRequest

這是一個簡單的代碼這樣做:

- (void) sendTweetWithoutPromp:(NSString*) tweetText 
{ 
    NSString *url = @"https://api.twitter.com/1.1/statuses/update.json"; 
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0]; 
    [params setObject:tweetText forKey:@"status"]; 

    ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; 

    [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) { 
     if(granted) 
     { 
      NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; 
      if ([accountsArray count] > 0) 
      { 
       ACAccount *twitterAccount = [accountsArray objectAtIndex:0]; 

       SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:TWRequestMethodPOST URL:[NSURL URLWithString:url] parameters:params ]; 

       [postRequest setAccount:twitterAccount]; 

       [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) 
       { 
        NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]]; 
        NSLog(@"output = %@",output); 
        dispatch_async(dispatch_get_main_queue(), ^{ 
         if (error) 
         { 

         } 

        }); 
       }]; 
      } 
      else 
      { 
       NSLog(@"no Account in Settings"); 
      } 
     } 
    }]; 

}