iOS 5 Twitter Framework: Tweeting without user input and confirmation (modal view controller)

前端 未结 4 1126
鱼传尺愫
鱼传尺愫 2020-11-27 17:18

Essentially what I want is for the app, once the user has allowed access to their Twitter account, to be able to tweet whatever the user has selected in a UITableView<

4条回答
  •  無奈伤痛
    2020-11-27 17:41

    It's definitely possible to tweet without it, the following is in production iOS 5 apps. It even takes the user to the requisite section of preferences if they haven't registered an account.

    - (void)postToTwitter
    {
        // Create an account store object.
        ACAccountStore *accountStore = [[ACAccountStore alloc] init];
    
        // Create an account type that ensures Twitter accounts are retrieved.
        ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    
        // Request access from the user to use their Twitter accounts.
        [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
            if(granted) {
                // Get the list of Twitter accounts.
                NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];
    
    
                if ([accountsArray count] > 0) {
                    // Grab the initial Twitter account to tweet from.
                    ACAccount *twitterAccount = [accountsArray objectAtIndex:0];
                    TWRequest *postRequest = nil;
    
                    postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/update.json"] parameters:[NSDictionary dictionaryWithObject:[self stringToPost] forKey:@"status"] requestMethod:TWRequestMethodPOST];
    
    
    
                    // Set the account used to post the tweet.
                    [postRequest setAccount:twitterAccount];
    
                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
                        [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                            dispatch_async(dispatch_get_main_queue(), ^(void) {
                                if ([urlResponse statusCode] == 200) {
                                    Alert(0, nil, @"Tweet Successful", @"Ok", nil);
                                }else {
    
                                    Alert(0, nil, @"Tweet failed", @"Ok", nil);
                                }
                            });
                        }];
                    });
    
                }
                else
                {
                    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];
                }
            }
        }];
    }
    

提交回复
热议问题