Ios 当应用程序挂起时,如何知道NSURLSessionPloadTask是否工作?
当我的应用程序在前台运行时,我会看到定期调用:Ios 当应用程序挂起时,如何知道NSURLSessionPloadTask是否工作?,ios,nsurlsessionuploadtask,Ios,Nsurlsessionuploadtask,当我的应用程序在前台运行时,我会看到定期调用:NSURLSessionTaskDelegate->URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend: 当我的应用程序移到后台并挂起时,对该方法的调用将停止,因此我对NSURLSessionPloadTask是否继续上载没有反馈。有什么技巧可以获得上传的反馈吗?通过查看其他关于NSURLSessionUploadTask的StackOverflow帖子,我可
NSURLSessionTaskDelegate->URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
当我的应用程序移到后台并挂起时,对该方法的调用将停止,因此我对NSURLSessionPloadTask是否继续上载没有反馈。有什么技巧可以获得上传的反馈吗?通过查看其他关于
NSURLSessionUploadTask
的StackOverflow帖子,我可以看出这个功能有很多混乱之处。以下是我发现的一些有助于减少这种混乱的反馈机制:
- 使用网络代理和数据包嗅探器,如Wireshark(有关详细信息,请参阅)。过滤掉所有流量,但要将文件上载到的服务器的流量除外。查找来自服务器的HTTP响应(200)和来自iOS设备的
,以表示上载已完成且已收到响应。您还可以使用数据包嗅探器来诊断上载问题。FIN,ACK
- 使用
捕获流程的网络流量仪器
nsurlsessiond
- 等待上载完成。如果您的应用程序位于后台,并在上载完成时挂起,则iOS会将您的应用程序从挂起状态移动到在后台积极运行,并按以下顺序调用以下方法:
- 通过
可以调用在应用程序进入后台之前未处理的对此方法的某些调用NSURLSessionTaskDelegate->URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
- 通过
NSURLSessionTaskDelegate:->URLSession:dataTask:didReceiveData:
- 通过
NSURLSessionTaskDelegate->NSURLSession:task:didcompletewitheror:
- 通过
nsurlsessionelegate->:urlsessiondifinisheventsforbackgroundurlsession:
- iOS为应用程序提供30秒的总时间,以便在挂起应用程序之前在后台处理下载结束
- 通过