Ios 后台NSURLSession,包含大量文件和用于身份验证的wsse HTTPS头

Ios 后台NSURLSession,包含大量文件和用于身份验证的wsse HTTPS头,ios,objective-c,background,nsurlsession,nsurlsessiondownloadtask,Ios,Objective C,Background,Nsurlsession,Nsurlsessiondownloadtask,我对在iOS应用程序上实现的一项功能感到非常疯狂:/ 我试图为用户添加在应用程序上下载一些文档的可能性,这样他甚至可以在脱机时访问它 例如,在应用程序中,用户可以浏览一些类别,从而找到文档。在该功能中,他可以选择下载类别A。该应用程序将从服务器下载该类别的所有内容和文档 一个类别可以从几十个文件到几千个!这就是为什么我们选择下载内容,即使应用程序是在后台 下面是使用NSURLSession在引擎盖下的工作原理: 我有一个名为DownloadManager的NSObject,它处理NSURLSes

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

我试图为用户添加在应用程序上下载一些文档的可能性,这样他甚至可以在脱机时访问它

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

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

下面是使用NSURLSession在引擎盖下的工作原理: 我有一个名为DownloadManager的NSObject,它处理NSURLSession的委托和会话本身。当我实例化它时,我使用后台配置创建会话。 我处理要下载的类别,以获取创建下载任务并启动它所需的任何内容。 当它完成一个类别有子类别等(深度为3级最大),我也必须下载,以获得他们的所有信息

问题是,我不能一有任务就把任务放在NSURLSession中,因为服务器使用wsse身份验证系统来获取路由。这个头有5分钟的生存时间,所以我必须在它进入NSURLSession对象之前创建它,并且(几乎)要确保它在它之后直接发送,我将NSURLSession中的任务数量限制在每个主机同时连接的限制范围内

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

有什么我在使用NSURLSession时没有得到的技巧需要理解吗?会话在后台工作正常,然后突然看起来好像死了,并且在或多或少的时间内(可能从几秒钟到几分钟)不发送事件以再次“工作”,这是正常的吗x

编辑:另一件事是,当应用程序处于前台时,下载工作没有任何问题

谢谢你给我的任何帮助,
Bilkix

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