【发布时间】:2015-05-29 06:40:48
【问题描述】:
我收到错误报告,说我的 iOS 应用程序在慢速连接时无法上传图片。虽然我的超时时间可能不够高,但还有另一个问题。
我发现上传进度很快就达到了 100%,尽管我可以在 Charles 中看到仍在传输字节。我使用下面的 NSURLSession 方法:
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromData:(NSData *)bodyData
completionHandler:(void (^)(NSData *data,
NSURLResponse *response,
NSError *error))completionHandler
并实现以下委托方法来接收进度事件:
- (void)URLSession:(NSURLSession *)session
task:(NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend
其实我用的是AFNetworking 2.5.2,就是用这个方法的。我的理论是这个委托方法报告从手机发送的字节而不是实际传输的字节。
以非常低的连接发送 300kb 将立即发送 5-6 个包,并在等待接收时报告 100% 的进度。
是否可以获得关于已确认传输的实际字节数的进度事件?
【问题讨论】:
标签: ios afnetworking-2 nsurlsession nsurlsessionuploadtask