问题标签 [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 回答
1153 浏览

ios - 更改现有 NSURLSession 上的 allowedCellularAccess

是否可以通过修改基础来更改allowsCellularAccess现有的值?NSURLSessionNSURLSessionConfiguration

如果用户的设备当前已连接到 WiFi,我希望在不取消现有请求的情况下尊重用户对我的应用程序设置的任何更改。

0 投票
1 回答
1593 浏览

ios - NSURLSessionconfiguration.shouldUseExtendedBackgroundIdleMode :它有什么作用?

找不到有关此实例变量的任何文档。

即使应用程序已移至后台,它是否与能够处理对网络请求的响应有关?

0 投票
1 回答
538 浏览

ios - 我怎么知道何时可以安全地重用来自另一个进程的后台 NSURLSessionConfiguration id?

我正在构建一个应用程序,用户可以在其中从应用程序和共享扩展启动后台文件上传。用户应该能够监控从主应用程序上传的任何进度。

在从扩展程序启动上传的情况下,我需要创建一个后台会话配置,其 id 与扩展程序中使用的相同,以获取委托调用以监控应用程序中的进度等。

在应用程序中,直到扩展程序退出,我才能执行此操作。苹果文档说https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html

您必须为每个标识符创建一个会话(在创建配置对象时指定)。共享同一标识符的多个会话的行为是未定义的。

我已经验证了这一点。如果我不关闭共享扩展,我可以在主应用程序中创建会话而不会出现任何错误,但我不会收到任何委托调用。当我在切换回主应用程序之前关闭扩展程序时,我可以附加到同一个后台会话并收到委托呼叫。都好。

completeRequestReturningItems:completionHandler:当我使用in关闭共享扩展NSExtensionContext时,进程何时退出?

https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSExtensionContext_Class/#//apple_ref/occ/instm/NSExtensionContext/completeRequestReturningItems:completionHandler

提到

调用此方法最终会关闭应用扩展的视图控制器。

“最终”不是很具体。我如何从主应用程序中确定扩展程序没有运行?

我想出的唯一解决方法是定期在共享容器中写入一个文件,并在超过该时间段的超时后让主upp首先拿起后台会话。但这是一个丑陋的黑客。

如果上传很小,是否有可能在扩展进程运行时上传完成,以便我必须在扩展而不是主应用程序中处理上传的完成?

总结一下:您如何安全地将上传从应用程序扩展传输到应用程序?

0 投票
2 回答
1393 浏览

swift - Alamofire 忽略 timeoutIntervalForRequest 和 timeoutIntervalForResource 参数

我目前正在尝试减少我的 iOS 应用程序中每个 Alamofire 远程调用的默认值,因为timeoutIntervalForRequest我不希望它分别等待 60 秒和 7 天。timeoutIntervalForResourceNSURLSessionConfiguration

这是我的代码:

这是我的日志:

如您所见,该Request Duration值超过 30 秒。

这是否取决于我使用Alamofire.Manager.sharedInstance.request而不是的事实Alamofire.request

0 投票
1 回答
2650 浏览

ios - 从前台 NSURLSession 移动到后台 NSURLSession - 处理进程中的任务

如果应用程序进入后台(例如,按下主页按钮),我正在尝试正确处理进程中的 NSURLSessionTasks。我目前正在采取将进程内任务复制到后台队列的方法(参见下面的代码)。但是,我发现后台任务的行为不规律并且并不总是完成。可以发现我可能做错了什么/建议最好的方法吗?

0 投票
1 回答
419 浏览

objective-c - NSMutableURLRequest 在使用 NSURLSession 时发送 2 次

我在使用NSMutableURLRequest时工作正常

但问题是当我的应用程序处于后台模式时,它将无法工作。

这是我的HttpRequest课堂方法:

从堆栈溢出,我发现NSURLSession在后台进行 API 调用。所以我用NSURLSession. 这是我所做的更新代码:

但是,当我使用NSURLSession请求发送两次时,我已经将断点NSMutableURLRequest排成一行,但它只调用一次。

请帮我解决问题。

0 投票
2 回答
714 浏览

ios - didcompletewitherror 即使对于带有错误 url 的请求也返回 nil

我有一个Nsurlsesiondownloadtask运行,用于下载本地托管的 XML 文件:url - http://10.232.254.59/catalogue.xml

问题是当我使用 url - http://10.232.254.59/catalogue.x或 url - http://10.232.254.59/catal 或任何其他组合而不更改 IP 时,didcompletewitherror委托给我 error= (null)。

我在更改 IP 时得到正确的错误,didCompleteWithError但在更改 IP/* 时却没有,因为即使在错误 url 的情况下,也会显示下载成功警报。
即使在错误的 url 情况下,我也会收到didFinishDownloadingToURL委托呼叫。
LoadMediaUrl_StartTask_StartActivityIndicator在其他几个地方打电话并使用相同的 backgroundSession obj。

谁能告诉我可能是什么原因?

0 投票
1 回答
1209 浏览

ios - 在 WiFi 上上传时出现 NSURLSession 错误:NSURLErrorDomain Code=-999

一年多前,我构建了一个应用程序,为用户提供照片共享和视频共享。它运行没有任何问题,直到几周前我引入了一个新功能:标记视频仅在 WiFi 可用时上传的可能性:视频设置为使用 NSURLSession 和 NSURLSessionConfiguration 其中allowCellular 设置为 NO .

大多数时候它工作正常:

  • 当我通过 3G/4G 连接时,我将视频设置为在 WiFi 上共享
  • 一旦我连接到 WiFi 网络,视频就会毫无问题地上传

但是,有些用户在连接到 WiFi 后不会上传他们的视频。我从他们那里得到了一些日志,每当他们连接到 Wifi 时,我都会看到一个错误,出于某种原因,NSURLSession 使委托调用:

出现以下错误:

有任何想法吗?会不会是服务器的问题?奇怪的是我无法重现它,也无法理解失败的原因

提前致谢!

0 投票
0 回答
160 浏览

background-service - sessionWithConfiguration:委托:delegateQueue:在模拟器中工作但不在设备中

我正在使用后台传输服务下载多个音频文件,直到昨天一切都按预期工作。现在,当我运行项目时,它卡在以下行的第二行 -

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.example.myapp"];

session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil]; //没有返回任何东西

我已经下载了多个演示应用程序,但它们也停留在同一行,尽管它们在模拟器中以及设备中的“defaultSessionConfiguration”中按预期工作。

那可能是什么问题?

谢谢你的帮助

0 投票
1 回答
495 浏览

ios - iOS 网络 - HTTP 连接和在后台运行

我有一个应用程序可以让用户发送带有图像的消息。用户可能会点击发送,然后立即关闭手机或切换到另一个应用程序。

我们遇到了一个问题,如果网络连接暂时不良,则消息将无法发送。我们切换到使用 NSURLSession backgroundConfigurationWithIdentifier以便后台应用程序不会立即使正在运行的请求超时。我们切换到对我们所有的 api 请求使用它,认为如果应用程序在错误的时间关闭,每个请求都能够在后台继续运行不会有什么坏处。

快进几周,我们注意到所有请求似乎都很慢。使用wireshark我刚刚发现这个后台会话似乎对每个请求都使用了一个新的http连接,这意味着它需要为每个请求设置一个TCP连接和新的TLS握手,这给我们应用程序中的每个请求增加了约500ms的延迟。这是一件大事,但我在任何地方都找不到这种行为的记录,包括上面的链接或 Apple 的后台传输注意事项

所以我的问题是,这种行为是预期的,还是我在某处做错了什么?NSURLSession 是否有一种简单的方法来发出 HTTP 请求,如果有一个现有的保持活动连接,则该请求将使用,但如果应用程序移至后台,则可以回退到 backgroundConfiguration?