问题标签 [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 投票
0 回答
22 浏览

ios - 如何使用变量来分配附加标头?

我有一个包含 3f78124e98419428b7 的变量。我想用我的变量替换这个字符串。
有谁知道我该怎么做?

0 投票
1 回答
1777 浏览

swift - NSURLRequestCachePolicy.UserProtocolCachPolicy 要求

我正在使用以下代码进行缓存,从服务器收到的响应具有以下标头。是否需要从请求端设置任何标头,以使缓存工作 10 秒。

Connection Received Resopnse Headers= [Date: Sat, 12 Sep 2015 22:51:16 GMT, Transfer-Encoding: Identity, Server: Apache-Coyote/1.1, Content-Type: application/json;charset=UTF-8, Expires: 2015 年 9 月 12 日星期六 22:51:26 GMT,缓存控制:max-age=10,必须重新验证]

没有缓存的强大代码。

从标头中删除 must-revalidate 后,它仍在获取请求。

Connection Received Resopnse Headers= [Cache-Control: max-age=10, Transfer-Encoding: Identity, Date: Sun, 13 Sep 2015 18:35:43 GMT, Content-Type: application/json;charset=UTF-8,服务器:Apache-Coyote/1.1,到期时间:星期日,2015 年 9 月 13 日 18:35:53 GMT]

后来的发现表明 POST 请求确实被缓存了,但不像 GET 那样工作,其中考虑了 max-age。

0 投票
0 回答
594 浏览

ios - AFHTTPSessionManager 快速发布视频

我正在尝试使用 AFNetworking > AFHTTPSessionManager Post 方法在后台上传视频。即使应用程序被暂停,我也希望它能够继续上传。但是我在执行这段代码时出错,它没有记录错误,并且在代码中没有指向任何地方。我尝试了关于我的场景的其他帖子中可用的所有解决方案,但无法使其正常工作。请检查下面的代码并建议我解决方案或将我链接到某个地方以使其工作

0 投票
1 回答
2017 浏览

connection - NSURLSession 中的连接重试

我想在 NSURLSession 中实现连接重试。是否需要设置任何参数来实现此目的,例如“ timeoutIntervalForRequest ”,并且 NSURLSession 负责重试连接。

如果没有任何参数,我们如何实现呢?

我目前的代码如下:

当响应代码不是 200 时,此函数应再次重试连接。我可以这样做吗。

0 投票
1 回答
4046 浏览

nsurlsession - 在 Alamofire 中使用 backgroundCompletionHandler 的正确方法是什么?

我不清楚如何正确使用它,但见过其他人在做这种事情:

在我们类似的实现中,此时completionHandlerpartial apply forwarder for reabstraction thunk helper...

本质上在哪里manager(尽管是单例):

但是,这会导致在控制台中打印以下警告:

Warning: Application delegate received call to -application:handleEventsForBackgroundURLSession:completionHandler: but the completion handler was never called.

我在这里设置了一个断点,此时消息已经在控制台中可见并且backgroundCompletionHandlernil.

我们正在使用 Xcode 7.0 构建 iOS 9 SDK,目前使用 Alamofire 2.0.2

我最初认为这是在我们合并 Swift 2.0 分支时引入的,但我也看到了使用 Xcode 6.4 针对 iOS 8 SDK 进行早期提交的消息。


更新 1

解决@cnoon 的建议:

  • 标识符匹配 - 配置和管理器设置在单例中,因此不可能出错。
  • 在类中添加和打印didSeton时,会在警告之前记录该消息。backgroundCompletionHandlerManager
  • 当在类内部打印闭包sessionDidFinishEventsForBackgroundURLSessiondelegate内部时,在警告之后Manager打印消息。
  • sessionDidFinishEventsForBackgroundURLSession在调用之前覆盖并在其中打印时,将在警告之后backgroundCompletionHandler打印消息。
  • 至于验证我是否为后台会话正确设置了 Xcode 项目,我不确定如何执行此操作,也找不到任何有关如何执行此操作的文档。

我应该注意,当尝试从我的手机上传一些屏幕截图时,我最初无法重现此问题以尝试这些建议。

只有在尝试分享一些照片后,我才能再次复制它。我不确定或相关性(如果有的话),但它可能与照片上传时间较长有关。


更新 2

UIBackgroundModes完全按照@Nick 的描述设置,直接completionHandler()在内部调用application:handleEventsForBackgroundURLSession:completionHandler:不会显示警告。


更新 3

所以,看来我忽略了一个小而重要的细节。有一个包装器Alamofire.Manager不会直接暴露它。其实现的相关部分如下所示:

AppDelegate并在执行该代码路径中设置完成处理程序。

我已经确认以下用于公开实例Alamofire.Manager并直接访问它的更改不会产生警告:

并在AppDelegate

基于此,似乎使用计算属性来代理完成处理程序是问题的原因。

我真的不想公开这个属性,并且很想知道任何解决方法或替代方法。

0 投票
2 回答
1699 浏览

swift - 在继承 NSURLSession Swift 时,初始化程序不会覆盖指定的初始化程序

我想继承 NSURLSession 类,但初始化有问题。基本上我重写了构造函数并在那里初始化常量authUrl,然后调用父 init 方法。

从 NSURLSession 的源代码中我发现它有两个初始化器:

我希望“最长”的 init 是指定的初始化程序,但事实并非如此。我怀疑那个指定的初始化程序init()甚至没有在源代码中指定。如何覆盖初始化程序并设置配置NSURLSessionConfiguration

0 投票
1 回答
332 浏览

ios - 更改 NSURLCache 内存和磁盘容量不起作用

我正在使用NSURLSession配置为使用共享的NSURLCache. 当应用程序进出后台时,我正在尝试更改缓存的大小。这个想法是在应用程序进入后台时减少内存和磁盘容量,并在应用程序进入前台时恢复原始容量。

对于文档的两者memoryCapacitydiskCapacity属性说:NSURLCache

在进行此调用时,[in-memory|on-disk] 缓存将在必要时将其内容截断为给定的大小。

但是,当我设置这些属性时,即使我设置的值(远)低于currentMemoryUsageor ,缓存大小也不会改变currentDiskUsage。此外,我可以轻松验证应用程序使用的内存没有改变,磁盘缓存的大小也没有改变。

似乎NSURLCache只使用初始化时设置的值,不考虑后续更改。不过,调用 gettermemoryCapacitydiskCapacity返回我的新值。

我错过了什么或做错了什么还是这是一个错误NSURLCache

0 投票
2 回答
201 浏览

ios - 从服务器下载文件一直失败,但相同的 obj-c 代码在另一个环境和 IOS 应用程序中工作

IOS 版本是 9,Xcode 7 和以下代码不起作用。但它适用于 IOS 版本 8、Xcode 6。

我正在使用以下代码从服务器下载文件:

不断给出错误:

这是GetDocuemntsD

*** 我可以将图像保存到文档目录,但我想在后台下载视频文件并向用户显示进度,但它一直失败。

我的 info.plist 有:

0 投票
2 回答
2577 浏览

ios - 如何为每个 NSURLRequest 设置不同的过期超时

是否可以为每个请求设置不同的过期超时?

我发现的唯一方法是使用不同的 NSURLSessionConfiguration 创建一个新的 NSURLSession 并更改timeoutIntervalForResource. 像 Alamofire 这样的框架也是如此。

0 投票
1 回答
123 浏览

ios - NSURLSessionTask 创建在带有 backgroundSessionConfiguration 的扩展中失败

上下文:我尝试使用 backgroundSessionConfiguration 从操作扩展调用创建任务(下载或上传)。

为此,我将苹果文档中的示例放在一边

我的问题是当我调用[mySession downloadTaskWithURL:url];它时返回 nil。

如果我将配置更改为NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];然后创建一个任务。

我看不出我做错了什么,我创建了一个应用程序组,并在应用程序和扩展程序中使用它。

我使用我在其中创建的组名,config.sharedContainerIdentifier但我不确定是否有必要。

注意:我对uploadTask 有同样的问题。