当我的应用程序在前台运行时,我会看到定期调用:NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
当我的应用程序移动到后台并被挂起时,对该方法的调用停止,因此我没有关于 NSURLSessionUploadTask 是否继续上传的反馈。是否有任何技术可以获取有关上传的反馈?
当我的应用程序在前台运行时,我会看到定期调用:NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
当我的应用程序移动到后台并被挂起时,对该方法的调用停止,因此我没有关于 NSURLSessionUploadTask 是否继续上传的反馈。是否有任何技术可以获取有关上传的反馈?
通过查看其他有关 StackOverflow 的帖子,NSURLSessionUploadTask
我可以看到对此功能有很多困惑。以下是我发现的一些反馈机制,以帮助减少这种混淆:
使用像 Wireshark 这样的网络代理和数据包嗅探器(有关详细信息,请参阅此内容)。过滤除进出您将文件上传到的服务器的流量之外的所有流量。查找来自服务器的 HTTP 响应 (200) 和FIN,ACK
来自 iOS 设备的 a,以表明上传完成并且已收到响应。您还可以使用数据包嗅探器来诊断上传问题。
用于Instruments
捕获进程的网络流量nsurlsessiond
NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
在应用程序进入后台之前未处理的对该方法的一些调用可能会被调用NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
NSURLSessionTaskDelegate -> NSURLSession:task:didCompleteWithError:
NSURLSessionDelegate -> :URLSessionDidFinishEventsForBackgroundURLSession:
我还在 github 上放了一个非常基本的 NSURLSessionUploadTask 示例应用程序和网络服务器。