如何查看我的Facebook iOS上传进度?

tom*_*mmi 2 iphone facebook-graph-api ios

我正在使用Facebook iOS SDK并使用Graph API将视频上传到Facebook.

上传工作正常,但我可以跟踪上传的进度,以便我可以在进度条中反映进度.

Nur*_*zam 5

这是一个老问题,但你想要做的是最新的Facebook iOS SDK v3.9.(2013年10月27日)

实质上,FBRequestConnection公开了一个属性urlRequest(NSMutableURLRequest),您可以使用该属性将任何其他第三方网络框架甚至Apple提供的数据发送出去.

https://developers.facebook.com/docs/reference/ios/current/class/FBRequestConnection#urlRequest

以下是使用AFNetworking 1.x获取进度回调的示例.

准备申请机构

NSDictionary *parameters = @{ @"video.mov": videoData,
                              @"title": @"Upload Title",
                              @"description": @"Upload Description" };
Run Code Online (Sandbox Code Playgroud)

创建FBRequest

FBRequest *request = [FBRequest requestWithGraphPath:@"me/videos" 
                                          parameters:parameters
                                          HTTPMethod:@"POST"];
Run Code Online (Sandbox Code Playgroud)

生成FBRequestConnection(取消并解压缩URLRequest)

FBRequestConnection *requestConnection = [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
}];
[requestConnection cancel];

NSMutableURLRequest *urlRequest = requestConnection.urlRequest;
Run Code Online (Sandbox Code Playgroud)

使用AFNetworking HTTPRequestOperation

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
  // Do your success callback.
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  // Do your failure callback.
}];
Run Code Online (Sandbox Code Playgroud)

设置进度回调

[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
  NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
Run Code Online (Sandbox Code Playgroud)

开始操作

[[APIClient sharedInstance] enqueueHTTPRequestOperation:operation];
// APIClient is a singleton class for AFHTTPClient subclass
Run Code Online (Sandbox Code Playgroud)

  • 这很完美!对于我们这些没有像Nur那样使用单身人士的人,你可以调用[operation start]; 设置uploadProgressBlock后 (2认同)