0

iOS6用の新しいソーシャルAPIを使用してFacebookビデオのアップロードを実装していますが、アップロードの進行状況を知る方法が見つからなかったことを除いて、すべてが正常に機能しています...Appleが提供していると思われるAPIはアップロードが完了した場合、またはアップロードが失敗した場合は、アップロードが完了している可能性があります-------それを知る方法を提供していませんか?

また、このトピックに関する質問は見つかりませんでした。私だけがそれに興味を持っている可能性はありません。誰かが他に何か知っている場合は、私たちに知らせてください。

ありがとう !

4

3 に答える 3

5

私はこれに苦労し、ついにそれを機能させました。スニペットを共有すると思いました:

-(void)sendTwitter {
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:
                              ACAccountTypeIdentifierTwitter];

[account requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
    if (granted == YES) {
        NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];
        if ([arrayOfAccounts count] > 0) {
            twitterAccount = [arrayOfAccounts lastObject];

            NSString *status = @"Secrets";
            UIImageView *uploadImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 640, 480)];
            UIImage *uploadImage = [image resizedImageToFitInSize:uploadImageView.bounds.size scaleIfSmaller:NO];

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

            SLRequest *postRequest = [SLRequest
                                      requestForServiceType:SLServiceTypeTwitter
                                      requestMethod:SLRequestMethodPOST
                                      URL:requestURL parameters:nil];
            [postRequest addMultipartData:UIImageJPEGRepresentation(uploadImage, 0.6) withName:@"media[]" type:@"multipart/form-data" filename:nil];
            [postRequest addMultipartData:[status dataUsingEncoding:NSUTF8StringEncoding] withName:@"status" type:@"multipart/form-data" filename:nil];
            [postRequest setAccount:twitterAccount];

            NSURLRequest *preparedRequest = [postRequest preparedURLRequest];

            AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:preparedRequest];

            [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
                NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
            }];
            [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
                    NSLog(@"Twitter upload success");
                    [self completedSendingPhotos];
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                    NSLog(@"Twitter upload error");
                }];

            [operation start];
        }
    }
}];

}

于 2013-02-04T19:23:01.470 に答える
2

ここで興味のある人は、AFNetworkingで行った方法です。SLRequestオブジェクトを取得した後、@Jesperメソッドを使用して進行状況リスナーを取得しました。

NSURLRequest* preparedRequest = [uploadRequest preparedURLRequest];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:preparedRequest];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"%lld bytes out of %d sent.", totalBytesWritten, fileSize);
    float progress = totalBytesWritten/(float)fileSize;
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Facebook upload success");
    });
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Facebook upload error");
    });
}];

[operation start];

お役に立てば幸いです。

于 2012-12-14T17:54:11.327 に答える
2

preparedURLRequestオブジェクトを取得するために使用しNSURLRequestます。を使用して手動でリクエストを送信するNSURLConnectionと、デリゲート メソッドを処理できるデリゲートを提供できますconnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:

于 2012-12-14T08:50:18.047 に答える