问题标签 [nsurlsession]

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 投票
3 回答
1431 浏览

ios - 多个 NSURLSessionUploadTasks

我正在开发一个将图像上传到服务器的应用程序,并且我正在使用 background NSURLSessionUploadTasks。这适用于少量上传的图像,例如 10 到 20 张照片。但是,我在尝试一次上传 100 多张图片时遇到了问题。backgroundNSURLSessionUploadTask的可扩展性如何?

当我打电话

反复,它阻塞等待信号量。这是由于与后台上传守护进程通信的往返时间吗?是否等待后台上传守护进程处理其他上传任务?有 100 多张照片,我已经看到这些调用总共阻塞了 40 多秒。此外,一旦这些调用完成,上传需要一段时间才能取得任何进展,并且它们经常一次停止很多秒。

我希望能够设置我的 100 多个上传任务,然后坐下来让 iOS 7 为我处理上传。但是,如果必须,我可以一次只创建几个上传任务。iOS 7 中提供了如此高级的后台上传功能,这似乎是一种耻辱。我还不如NSURLConnection在 iOS 6 下使用。

谢谢你的帮助。

0 投票
3 回答
13660 浏览

ios - NSURLSession 后台下载 - 通过网络故障恢复

在阅读了有关使用新 iOS7 api (NSURLSession) 进行后台下载的 Apple 文档后,我有点失望。我确信 Apple 正在后台管理网络可用性的暂停/恢复(或提供这样做的选项),但没有……</p>

所以阅读文档,这就是我们所拥有的:

https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/URLLoadingSystem/NSURLSessionConcepts/NSURLSessionConcepts.html

当任何任务完成时,NSURLSession 对象调用代理的 URLSession:task:didCompleteWithError: 方法,带有一个错误对象,如果任务成功完成,则为 nil。如果任务是可恢复的下载任务,则 NSError 对象的 userInfo 字典包含 NSURLSessionDownloadTaskResumeData 键的值。您的应用应使用可达性 API 来确定何时重试,然后应调用 downloadTaskWithResumeData: 或 downloadTaskWithResumeData:completionHandler: 来创建新的下载任务以继续下载。转到步骤 3(创建和恢复任务对象)。

到目前为止我了解解决方案,但我的问题是:哪种架构最适合处理网络丢失并在后台恢复下载?

在我这边,我使用的是可达性,每次网络可用时,我都会恢复所有任务(在创建时通过 NSArray 引用),并在网络丢失时暂停它们。这在前台效果很好,但对于后台我需要以下几点帮助:

  • 如果我的应用在前台没有连接,如果我在没有连接的情况下进入后台,我的所有任务都将保持暂停状态,并且在网络可用时不会返回......</p>

  • 在后台失去网络,停止我所有的下载/任务。设想:

    • 在前台,我开始下载我的任务
    • 我进入后台,10 秒后切换到“aireplan 模式”
    • 我所有的任务都出错了。所以在方法 URLSession:task:didCompleteWithError: 我使用 downloadTaskWithResumeData 恢复它们,或者如果我不能(因为有些没有足够的恢复数据)我正在创建一个新任务而不恢复它(除非网络回到那个时间)。
    • 然后我把wifi挂了
    • 由于我仍处于后台,因此当网络恢复时,我无法在不启动应用程序的情况下触发“恢复”……</li>

我该如何解决这些问题?我错过了什么吗?

0 投票
3 回答
4829 浏览

ios - NSURLSession 什么时候运行?

我有一种情况,当设备收到推送通知时,我会发送一个NSURLSessionNSURLConnection. 我有几个关于NSURLSession.

NSURLSession's如果互联网连接丢失,数据任务是否会在后台自动恢复?

NSURLSession如果最初没有互联网,是否会自动尝试完成任务,或者会话是否只是返回错误?

0 投票
1 回答
498 浏览

ios - NSURLSessionConfiguration 总是返回 nil

我正在尝试访问NSURLSessionConfiguration
我尝试使用以下语句来检索NSURLSessionConfiguration.

声明 1。

上面的语句返回nil

声明 2。

上面的语句也返回nil

谁能告诉我NSURLSessionConfiguration上课有什么问题?

在此处输入图像描述

0 投票
2 回答
7994 浏览

objective-c - NSURLSessionDataTask 未执行完成处理程序块

我正在尝试从本地节点服务器中提取一些数据。服务器正在获取获取请求并记录它,但由于某种原因,我的 iOS 应用程序不会执行我在完成处理程序中拥有的任何代码。这是代码:

}

程序运行时,nameLabel 不会更改为“yay”。但是,如果我尝试在 NSURLSessionDataTask 行之前更改 nameLabel,它会更改。

0 投票
2 回答
96 浏览

ios - 请求在模拟器和设备上返回不同的数据

当我在模拟器上请求网页时,我得到了 HTML,但是当我从设备发出请求时(我在 wifi 和蜂窝网络上尝试过)。这种情况始终如一地发生。

什么会导致这个?

编辑:这是在设备上为我返回的内容,在模拟器上我得到了真实页面:

编辑:我知道它不是用户代理。我进行了自定义配置,问题仍然存在。

编辑:问题继续与 NSURLRequest 以及 NSURLSession。

0 投票
4 回答
6508 浏览

ios7 - NSURLSession 或 NSURLConnection - iOS 6 支持

我需要连接到我的服务器以获取一些JSON数据,并且我必须同时支持iOS 6iOS 7.

我应该创建两个类吗?一个带有NSURLSessionforiOS 7一个带有NSURLConnectionfor iOS 6?还是我应该同时使用NSURLConnection它们?

0 投票
4 回答
10331 浏览

ios - NSURLSession:后台上传然后调用一个服务api

我试图使用新的 ios7 后台传输 api 将一些照片上传到服务器。现在发生的事情是 1)我们将字节上传到 s3 2)调用服务 api 来“完成”上传

我查看了这个文档,似乎背景 NSURLSession 不支持“数据”任务。这是否意味着在实际上传完成后我不能在后台执行第 2 步?

0 投票
7 回答
10664 浏览

iphone - NSURLSession 和亚马逊 S3 上传

我有一个应用程序正在将图像上传到亚马逊 S3。我一直在尝试将其从使用 NSURLConnection 切换到 NSURLSession 以便在应用程序处于后台时可以继续上传!我似乎遇到了一些问题。NSURLRequest 被创建并传递给 NSURLSession 但亚马逊发回 403 - 禁止响应,如果我将相同的请求传递给 NSURLConnection 它完美地上传文件。

这是创建响应的代码:

然后这标志着响应(我认为这来自另一个 SO 答案):

然后,如果我使用这行代码:

它可以工作并上传文件,但如果我使用:

我得到了禁止的错误..!?

有没有人尝试用这个上传到 S3 并遇到类似的问题?我想知道这是否与会话暂停和恢复上传的方式有关,或者它对请求做了一些有趣的事情..?

一种可能的解决方案是将文件上传到我控制的临时服务器,并在完成后将其转发到 S3……但这显然不是一个理想的解决方案!

任何帮助深表感谢!!

谢谢!

0 投票
1 回答
2185 浏览

ios - 在后台下载多个文件(仅限 iOS 7)

我目前正在开发一个只能在 iOS 7 上运行的播客应用程序,它具有允许在后台模式下同步和下载最近剧集的功能。

所以同步很清楚,我实现了该 application:performFetchWithCompletionHandler 方法并在其中调用了同步方法,当同步完成时,我调用 completionHandler UIBackgroundFetchResultNewData,或者如果它失败了,我调用UIBackgroundFetchResultFailed. 但是当我运行下载管理器开始下载所有新剧集时,它可能需要很长时间,这取决于网络质量和文件大小,并且后台模式会在某个时候冻结并暂停最近的下载。

如何正确设计后台下载?

或者可能是一些教程链接,它正确描述了后台下载文件。