我正在使用适用于iOS6的新社交API实现Facebook视频上传,一切正常,但我没有找到方法来了解上传的进展情况...... Apple似乎唯一的API提供的是,如果上传完成或失败,他们可能是-------他们没有提供知道它的方法吗?
我也没有找到关于这个主题的任何问题,我不可能是唯一对此感兴趣的人,如果有人知道其他任何事情,请告诉我们。
谢谢!
答案 0 :(得分: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];
}
}
}];
}
答案 1 :(得分:2)
使用preparedURLRequest
获取NSURLRequest
对象。使用NSURLConnection
手动发送请求可让您提供可以处理委托方法的委托,例如connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
。
答案 2 :(得分: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];
希望有所帮助!