后台 NSURL 包含大量文件和用于身份验证的 wsse HTTPS 标头



我对我在iOS应用程序上实现的功能感到非常疯狂:/

我正在尝试为用户添加在应用程序上下载一些文档的可能性,以便他即使在离线时也可以访问它。

例如,在应用程序中,用户可以浏览某些类别,这些类别将引导他访问文档。在功能中,他可以选择下载类别A。该应用程序将从服务器和文档下载该类别中的所有内容。

一个类别可以从几十个文件到几千个文件!这就是为什么我们选择下载内容,即使应用程序在后台

因此,以下是它如何使用NSURLSession在后台工作:我有一个叫做DownloadManager的NSObject,它处理NSURLSession的委派和会话本身。当我实例化它时,我使用后台配置创建会话。我处理要下载的类别以获取创建下载任务并启动它所需的任何内容。当它完成时,一个类别有子类别等等(最大深度为 3 级),我还必须下载这些子类别以获取它们的所有信息。

问题是我不能在有任务后立即将任务放在 NSURLSession 中,因为服务器使用 wsse 身份验证系统来允许 GET 路由。此标头的生命周期为 5 分钟,因此我必须在它进入 NSURLSession 对象之前真正创建它,并且(几乎)确保它直接在之后发送它,我将 NSURLSession 中的任务数限制为每个主机的同时连接数限制。

在调试模式下(使用 XCode 编译和启动),该应用程序运行良好,并且在后台运行下载任务似乎没有问题,但是当我在测试模式(使用 Crashlytics)中对其进行测试时,后台的处理速度确实要慢得多,有时似乎 NSURLSession 似乎不再发送事件......

有什么棘手的事情要理解,我没有因为使用 NSURLSession 而得到吗?会话在后台工作正常,然后突然似乎死了,并且或多或少地长时间不发送事件(它可以从几秒钟到整分钟!)再次"工作",这是否正常?:x

编辑 :另一件事是,当应用程序处于前台时,下载可以毫无问题地工作

谢谢你给我的任何帮助,比尔基克斯

好的,多亏了爱斯基摩人,我在苹果开发者论坛上得到了答案。我在这里链接了这篇文章,以便进一步的开发人员可以轻松看到解释:)

https://forums.developer.apple.com/message/125217#125217

最新更新