gpt4 book ai didi

ios - 当应用程序暂停时,我如何知道 NSURLSessionUploadTask 是否正常工作?

转载 作者:行者123 更新时间:2023-11-28 21:37:12 29 4
gpt4 key购买 nike

当我的应用程序在前台运行时,我看到定期调用:NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:

当我的应用程序移到后台并挂起时,对该方法的调用停止,因此我没有关于 NSURLSessionUploadTask 是否继续上传的反馈。是否有任何技术可以获取有关上传的一些反馈?

最佳答案

通过查看有关 NSURLSessionUploadTask 的其他 StackOverflow 帖子,我可以看到关于此功能存在很多混淆。以下是我发现的一些有助于减少这种混淆的反馈机制:

  • 使用像 Wireshark 这样的网络代理和数据包嗅探器(详见 this)。过滤除您要将文件上传到的服务器的流量之外的所有流量。查找来自服务器的 HTTP 响应 (200) 和来自 iOS 设备的 FIN,ACK 以表示上传已完成并且已收到响应。您还可以使用数据包嗅探器来诊断上传问题。 Wireshark

  • 使用 Instruments 捕获进程 nsurlsessiond

  • 的网络流量

Instruments capture for nsurlsessiond

  • 等待上传完成。如果您的应用程序在后台并在上传完成时挂起,那么 iOS 会将您的应用程序从挂起状态移动到在后台主动运行并按此顺序调用以下方法:
    • 通过 NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend: 可以调用在应用程序进入后台之前未处理的对该方法的一些调用
    • 通过 NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
    • 通过 NSURLSessionTaskDelegate -> NSURLSession:task:didCompleteWithError:
    • 通过 NSURLSessionDelegate -> :URLSessionDidFinishEventsForBackgroundURLSession:
    • iOS 在挂起应用程序之前给应用程序 30 秒的时间来在后台处理下载结束

我还在 github 上放了一个非常基本的 NSURLSessionUploadTask 示例应用程序和网络服务器 here .

关于ios - 当应用程序暂停时,我如何知道 NSURLSessionUploadTask 是否正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441325/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com