问题标签 [nsurlsessionconfiguration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
963 浏览

ios - NSURLSession 后台传输不起作用

我正在尝试将一系列文件从服务器下载到 iOS 应用程序,目的是即使应用程序处于后台模式也会下载这些文件。

我正在使用NSURLSession及其一系列 API提供的后台传输。

当应用程序在前台模式下运行时,我启动了下载任务,它给了我预期的结果,因为一系列下载运行良好,但是如果我在一系列下载正在进行时按下主页按钮,那么它将立即停止,当我进入应用程序时再次下载将恢复。

如果用简单的话来说,后台传输甚至对我不起作用。

编辑

最初我在模拟器中测试它并没有很好地工作,有人评论说要在真实设备中测试它,所以我通过在调试模式下连接真实设备来测试它真的很好,我认为一切都解决了,但它又给了我令人震惊的是,如果我断开设备与 Xcode 的连接并检查应用程序,它根本不起作用:(

我创建了一个示例应用程序来演示这个问题,请从这里下载

注意:在这个示例应用程序中,我在didFinishDownloadingToURL中重新启动了下载调用,以模拟一系列下载文件

有人可以帮我解决这个问题吗?

0 投票
1 回答
695 浏览

macos - NSURLSession 后台配置在 macOS 上的好处

在 iOS 上,使用后台配置初始化 NSURLSession 至关重要,以便在应用程序处于后台时获得上传和下载的好处:

Swift 2 中的示例:

在 OSX 10.10+ 上,使用后台会话配置是否有任何好处,即使应用程序当前不在焦点范围内,也可以持续上传或下载?根据我的经验,默认会话配置不太容易受到错误的影响:

0 投票
0 回答
453 浏览

ios10 - URLSessionConfiguration 的 httpMaximumConnectionsPerHost 在 iOS 10 中不起作用?

设置此参数不会影响
到主机的同时连接数。我在苹果开发者论坛上发现了同样的问题。它看起来像 iOS 10 中的一个错误,iOS 9 可以正常工作。

有人有同样的问题吗?如果有另一种稳定的方法来管理后台许多上传/下载的队列?

0 投票
1 回答
323 浏览

ios - (iOS)后台运行下载任务

嗨,如果我在 ios 中使用 NSUrlsession backgroundSessionConfiguration,我可以无限运行下载任务(比如 1 小时)。还是会在3分钟后被杀死?

0 投票
1 回答
734 浏览

ios - 如何确保使用了我的自定义 URL 协议?

根据 的文档NSURLSessionConfiguration::protocolClasses,无法保证将使用我的自定义 url 协议。我如何确保在我将其设置为protocolClasses属性时使用它?

在处理请求之前,NSURLSession 对象首先搜索默认协议,然后检查您的自定义协议,直到找到能够处理指定请求的协议。它使用canInitWithRequest: 类方法返回YES 的协议,表明该类能够处理指定的请求。

我无法使用单个 URL 协议设置数组,因为它具有canInitWithRequest:方法逻辑并且可能无法处理所有请求。

0 投票
1 回答
463 浏览

ios - 使用 Alamofire 上传 MultipartFormData

我一直在尝试使用 Alamofire 实现多部分表单数据。我编写了一些代码,它适用于在 60 秒内执行的请求。但是,如果请求超过此值,则它会结束并且上传不会完成:

变量视图

另外,我得到了这个输出(可能意味着我的应用程序正在尝试写入一个关闭的 tcp 套接字):

2017-06-20 17:22:21.924948 app[4645:1381848] [] nw_endpoint_flow_prepare_output_frames [110.1 10.39.80.102:8550 就绪套接字流(满意)] 使用 1 帧失败,标记为失败

2017-06-20 17:22:21.928262 app[4645:1381848] [] nw_endpoint_handler_add_write_request [110.1 10.39.80.102:8550 套接字流失败(满意)] 无法接受写入请求

2017-06-20 17:22:21.929278 app[4645:1381027] [] __tcp_connection_write_eof_block_invoke 写入关闭回调收到错误:[22] 无效参数

我已经尝试通过更改和参数来修改URLSessionConfiguration我用来执行请求的:timeoutIntervalForRequesttimeoutIntervalForResource

但是,我仍然遇到同样的问题。有谁知道如何解决这个问题?或者有没有人面临同样的问题?

谢谢

0 投票
1 回答
6515 浏览

ios - 如何在 URLSession 的 HTTP 标头中为“授权”设置“令牌 xxxxxxxxxx”

我正在使用的后端 API 要求每个请求都发送一个令牌,以针对Authorization 这种格式的 HTTP 标头键 - Token xxxxxxxxxx.

现在,我正在做以下事情。

这有时会起作用,有时会Authorization在发出请求时剥离标头字段。我使用查尔斯代理检查了这一点。

Apple 的文档说明了以下内容。

NSURLSession 对象旨在为您处理 HTTP 协议的各个方面。因此,您不应修改以下标头:授权、连接、主机、WWW-Authenticate

作为解决方案,许多人建议使用didReceiveAuthenticationChallengeURLSession 的委托方法。

在这里,您需要传递一个URLSession.AuthChallengeDisposition实例来说明您希望如何响应质询,并传递一个URLCredential实例来传递凭据以响应身份验证质询。

我不知道如何以及是否可以创建一个将为标题字段URLCredential添加的实例。Token xxxxxxxxAuthorization

有知识的人可以帮我解决这个问题吗?

PS - 这个问题中提到的所有代码都在 Swift 3 中。 这个问题问的问题与我所拥有的类似。但是,那里给出的答案对我不起作用。而且,在有关 Apple 不允许Authorization添加标题的问题下提出的一些问题没有得到解答。

编辑:

贴出相关代码。

在这里,我可以确认“授权”的标头字段已添加到请求的标头字典中。

但是,当我检查服务器上的请求时,缺少“授权”的标头字段。有什么想法吗?

0 投票
1 回答
340 浏览

ios - 最大 # 同时下载与 NSURLSession 无关主机

我知道关于...的HTTPMaximumConnectionsPerHost选项,NSURLSessionConfiguration但是无论主机如何,iOS 可以处理多少个连接?

我认为这取决于......核心数......网络接口......以及操作系统通常有多忙+其他应用程序的下载。

找不到有关此的任何提示。

无论如何,我认为一次期望超过 2 或 3 个是荒谬的..

编辑

假设能够拥有任意数量的主机和 NSURLSession 实例

0 投票
1 回答
417 浏览

ios - 可以使用不同的配置多次创建 NSURLSession 对象吗?

我可以在需要时使用不同的配置创建会话对象吗?或者对创建会话对象有任何限制吗?

0 投票
3 回答
1221 浏览

swift - Cannot invoke 'dataTask' with an argument list of type (with: NSMutableRequest, ...)

enter image description here

Here I am trying a demo from appCoda to integrate YouTube API. But not able to move further because of this method error :

Cannot invoke 'dataTask' with an argument list of type '(with: NSMutableURLRequest, completionHandler:(Data?, URLResponse..)'