我收到错误报告,说我的 iOS 应用程序在连接速度慢时无法上传图片。虽然我的超时时间可能不够长,但还有另一个问题。
我发现上传进度很快就达到了 100%,尽管我可以在 Charles 中看到字节仍在传输。我使用以下 NSURLSession 方法:
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromData:(NSData *)bodyData
completionHandler:(void (^)(NSData *data,
NSURLResponse *response,
NSError *error))completionHandler
并实现以下委托(delegate)方法来接收进度事件:
- (void)URLSession:(NSURLSession *)session
task:(NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend
实际上我正在使用 AFNetworking 2.5.2,它使用了这种方法。我的理论是,此委托(delegate)方法报告的是从手机发送的字节数,而不是实际传输的字节数。
在非常低的连接下发送 300kb 将立即发送 5-6 个包并在等待接收时报告 100% 的进度。
是否可以获取已确认传输的实际字节数的进度事件?
最佳答案
是的,这是可能的!
[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
float prog = (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100);
[self.progBar setProgress:prog];
NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
}];
关于ios - NSURLSession,上传任务 - 获取传输的实际字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522793/