ios5 - iOS 的 Twitter 框架支持自动分享吗?

标签 ios5 twitter

我有一个名为 twitter 的按钮,当我单击此按钮时,通常会出现一个用于发推文的 View ,即 TWTweetComposeViewController 。我有两种发送消息的方式,即自动共享和正常共享。正常共享运行良好,但我对如何在自动共享中执行相同操作表示怀疑,这意味着当我单击 Twitter 按钮时会自动发送一些默认消息而不是显示TWTweetComposeViewController View 并单击“完成”按钮。

最佳答案

最后我在ios5中搜索了很多与Twitter相关的问题,并阅读了twitter开发文档并尝试了这个答案。我认为这是自动分享的解决方案之一。

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

        // Request access from the user to access their Twitter account
        [account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
            // Did user allow us access?
            if (granted == YES)
            {
                // Populate array with all available Twitter accounts
                NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];

                // Sanity check
                if ([arrayOfAccounts count] > 0) 
                {
                    // Keep it simple, use the first account available
                    ACAccount *acct = [arrayOfAccounts objectAtIndex:0];

                    NSURL *url = 
                    [NSURL URLWithString:
                     @"https://upload.twitter.com/1/statuses/update_with_media.json"];

                    //  Create a POST request for the target endpoint
                    TWRequest *request = 
                    [[TWRequest alloc] initWithURL:url 
                                        parameters:nil 
                                     requestMethod:TWRequestMethodPOST];

                    //  self.accounts is an array of all available accounts; 
                    //  we use the first one for simplicity
                    [request setAccount:acct];

                    //  The "larry.png" is an image that we have locally
                    UIImage *image = (UIImage *)[dictionarydata valueForKey:@"image"];
                    NSLog(@"%@",image);
                    if (image!=nil) {

                        //  Obtain NSData from the UIImage 
                        NSData *imageData = UIImagePNGRepresentation(image);


                        //  Add the data of the image with the 
                        //  correct parameter name, "media[]"
                        [request addMultiPartData:imageData 
                                         withName:@"media[]" 
                                             type:@"multipart/form-data"];

                        // NB: Our status must be passed as part of the multipart form data
                        NSString *status = [NSString stringWithFormat:@"%@ %@ %@",[dictionaryData valueForKey:@"firstname"],[dictionaryData valueForKey:@"lastname"],[dictionarydata valueForKey:@"title"]];

                        //  Add the data of the status as parameter "status"
                        [request addMultiPartData:[status dataUsingEncoding:NSUTF8StringEncoding] 
                                         withName:@"status" 
                                             type:@"multipart/form-data"];
                        //  Perform the request.  
                        //    Note that -[performRequestWithHandler] may be called on any thread,
                        //    so you should explicitly dispatch any UI operations to the main thread 
                        [request performRequestWithHandler:
                         ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                             NSDictionary *dict = 
                             (NSDictionary *)[NSJSONSerialization 
                                              JSONObjectWithData:responseData options:0 error:nil];

                             // Log the result
                             NSLog(@"%@", dict);

                             dispatch_async(dispatch_get_main_queue(), ^{
                                 // perform an action that updates the UI...
                             });
                         }];
                    }else{
                        NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1/statuses/update.json"];
                        NSDictionary *p = [NSDictionary dictionaryWithObjectsAndKeys:
                                           [NSString stringWithFormat:@"%@ %@ %@",[dictionaryData valueForKey:@"firstname"],[dictionaryData valueForKey:@"lastname"],[dictionarydata valueForKey:@"title"]], @"status",
                                           nil
                                           ];
                        TWRequest *postRequest = [[TWRequest alloc]
                                                  initWithURL:   url
                                                  parameters:    p
                                                  requestMethod: TWRequestMethodPOST
                                                  ];

                        // Post the request
                        [postRequest setAccount:acct];

                        // Block handler to manage the response
                        [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                            NSLog(@"Twitter response, HTTP response: %i", [urlResponse statusCode]);
                        }];
}
                }
            }
        }];

关于ios5 - iOS 的 Twitter 框架支持自动分享吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12037571/

相关文章:

ios - iOS 5模拟器

xcode - Mountain Lion 上 xCode 4.5.1 中的 iOS 4 和 iOS 5 SDK

ios - 在 iOS 5 中从 Web 服务器获取 json 时出现问题

iphone - 如何将滑动手势添加到 UITableView 单元格?

python - 使用 Tweepy 在 Python 中获取关注者列表的最佳方法

iPhone 自定义电话联系人的电话响铃方式

api - Twitter 帐户事件 API 的 Webhook 传递不一致

ruby-on-rails - 如何将 Twitter 搜索提要添加到我的 Ruby on Rails 应用程序?

ios - MGTwitter 引擎 - 返回用户名

java - 推特 : getStatus()