问题标签 [nsurlsessionuploadtask]

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 回答
558 浏览

ios - 应用程序终止时的 NSURLSession 后台会话回调

我正在使用以下代码为大量上传创建后台会话,

并保存标识符以便稍后与会话重新关联。但是一旦应用程序进入后台并被操作系统终止,在重新启动时,即使我使用相同的标识符创建会话,我也不会收到来自该会话的任何回调。它总是创建没有正在进行的上传任务的新会话。

上一个任务无法提前完成,因为我有 GB 要上传。

我在这里错过了什么吗?任何附加设置等。

0 投票
1 回答
3564 浏览

ios - NSURLSession,上传任务 - 获取传输的实际字节

我收到错误报告说我的 iOS 应用程序在慢速连接上无法上传图像。虽然我的超时时间可能不够高,但还有另一个问题。

我发现上传进度很快就达到了 100%,尽管我可以在 Charles 中看到字节仍在传输。我使用以下 NSURLSession 方法:

并实现以下委托方法来接收进度事件:

实际上我使用的是AFNetworking 2.5.2,它使用了这种方法。我的理论是这个委托方法报告从手机发送的字节而不是实际传输的字节。

以非常低的连接发送 300kb 将立即发送 5-6 个包,并在等待接收时报告 100% 的进度。

是否可以获得关于已确认传输的实际字节数的进度事件?

0 投票
0 回答
376 浏览

objective-c - NSURLSession 在后台上传块

我有一个大视频要上传,比如 3GB 4GB 大小。我需要使用 NSURLSessionUploadTask 在后台上传它。如果我尝试上传这个单个文件,那么它可以正常上传,但在这种情况下暂停/恢复无法正常工作。我在某处暂停,然后它从其他地方甚至从开始恢复。

所以为了实现暂停/恢复,我转向块上传。现在我在开始时创建了 3 个块,将它们的字节写入单独的文件并开始上传它们。它工作正常。当应用程序进入后台并且现有块完全上传时,就会出现问题。现在我需要添加新的块来上传。

它给了我足够的时间来为其他 3 个块编写文件并启动它们,但是除非用户打开应用程序,否则这些块永远不会继续上传。一旦应用程序进入前台,这些块就会开始上传。但是当应用程序进入后台时同样重复,我需要向它添加更多块。

因此,在应用程序处于后台时添加到 NSURLSession 的块永远不会开始上传。请提供有关它的帮助。

0 投票
1 回答
316 浏览

ios - 后台任务执行未按预期工作

我需要在点击远程通知中的可操作按钮时调用 Web 服务。

在远程通知上,我们有两个按钮“详细信息”和“获取”。“Fetch”是一个后台操作(激活模式 = UIUserNotificationActivationModeBackground),将在不启动应用程序的情况下发送一些数据。

在点击“获取”时,我拨打了网络服务电话以发送我从远程通知中获得的一些详细信息。

我已经使用 NSURLSession 将这些数据发送到服务器。

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.applewatch.sample"];

self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];

当应用程序处于活动状态但不处于挂起模式时,这可以正常工作。我的意思是,一旦我们收到远程通知,如果在通知 1 小时后采取行动,服务请求就不会通过。

我怀疑,服务请求没有通过,因为应用程序处于暂停模式/终止模式。

可以帮助我如何在后台进行服务调用。

注意:我没有在 info.plist 中启用“Background Fetch”选项。

让我知道是否需要在 UIApplication 委托中启用和实现服务调用

应用程序:执行FetchWithCompletionHandler:

0 投票
1 回答
331 浏览

ios - UI 更新缓慢 *仅*如果响应 NSURLSessionUploadTask 完成块中发生的更改而调用

该应用程序与我服务器上的 php 脚本交互。用户可以创建预订,并将详细信息写入数据库。随后,他们可以取消该预订。

在应用程序中,预订是一个对象,负责从服务器收集自己的详细信息。BookingViewController预订也可以自行取消(根据用户的请求)——在调用预订的方法时按下“取消按钮”,该(void)cancelBooking方法发布到bookings-cancel.php使用 NSURLSessionUploadTask 和从 .json 滚动的 json 数据@{ @"invoiceNumber": self.invoiceNumber }

数据库已更新,uploadSession 返回新的详细信息,并且预订会相应更新。所有这一切都很好地响应 - 在不到一秒钟的时间内,始终如一地启动和返回。

当我尝试使用从预订对象更新(在 uploadSession 完成块内)BookingViewController读取的值来更新 UI(交货日期和价格的标签)时,就会出现问题。

BookingViewController 被分配为预订的代表。预订是在其自己的“价格”属性上为 KVO 设置的。每当价格发生变化时,预订就会调用priceDidChange:(NSString *)updatedPriceon的委托方法BookingViewController,从而触发对and的NSLog更新。deliveryLabel.textpriceLabel.text

测试表明,如果我直接从“取消”按钮更新价格,或者在 uploadTask 之外的cancelBooking方法中使用任何其他显式命令(例如,self.price = @"123.45") ,那么 UI 更新速度一样快写出时(即,几乎是瞬间)。NSLog

但是,如果价格在 uploadTask 完成块中更新,NSLog 将同样响应地写出,但是对deliveryLabel.textpriceLabel.text 的更新非常缓慢- 延迟大约在 5 到 12 秒之间变化。

NSLogs到处都是,并且相信这不仅仅是延迟从预订对象获取更新值。很容易我已经看到了二十次“ priceDidUpdate delegate notification-updatedPrice is: 0.00”(更新后的价格),然后算到 10 之前self.priceLabel.text实际上设置为@"0.00". 完全被难住了。

万一它很重要,它NSURLSession被配置为使用ephemeralSessionConfiguration没有调整。

根据调用是来自uploadTask完成块内部还是外部,是否有任何理由导致UI更新BookingViewController需要更长的时间?priceDidChange

提前致谢!

0 投票
1 回答
414 浏览

ios - 使用自定义委托从 NSURLSessionUploadTask 获取服务器响应

我想通过使用将图像上传到服务器NSURLSessionUploadTask,我已经通过使用自定义委托完成了

但我无法得到服务器的响应。usingtask.response返回错误代码和其他标题信息,但不返回页面上显示的实际 html。

我无法使用完成处理程序创建 url 任务,因为我需要获取上传进度。

如何使用 NSData 从页面响应中获取NSURLSessionUploadTask

0 投票
1 回答
1004 浏览

ios - NSUrlSession: is it possible to upload files in the background?

Using NSUrlSession with a background configuration let's me download files even if the app gets terminated by iOS. Being curious, I tried to add an upload task and noticed that it won't continue, even not if the app is only suspended.

Apple talks about "Downloading in the background" but they don't explicitly state that uploading would not be possible.

Can somebody confirm that uploads and background session configuration don't work together?

0 投票
1 回答
1177 浏览

ios - 将 NSURLConnection 转换为 NSURLSessionUploadTask 示例

大家好,提前感谢您在理解如何将一些 NSURLConnection 代码转换为较新的 NSURLSession 方面提供的任何帮助。我想要做的是向服务器发出 POST 请求,并发送为密钥“照片”编码的照片库 64。

下面我有一个用 NSURLConnection 编写的工作示例,我想将其转换为 NSURLSession。

正如我从我的理解中阅读苹果文档一样,我应该使用数据任务,因为在我的情况下它是一个图像,如果它是像视频这样的较大传输,我应该使用上传任务。

关于上传任务,我找到了下一个教程,但问题是在我的情况下,我还设置了一个标题,而且我的内容类型应该是 multipart/form-data。

我想提一下,我尝试使用 Ray Wenderlich 教程构建一个工作示例,但我在设置标题的方式方面遇到了错误

预先感谢您提供的任何帮助!

0 投票
0 回答
54 浏览

php - 使用 NSURLSessionUploadTask 上传视频时缺少边界

使用 NSURLSessionUploadTask 上传视频时,服务器出现错误,服务器错误状态:

PHP 警告:第 0 行未知中的多部分/表单数据 POST 数据中缺少边界

这是我的代码:

0 投票
0 回答
227 浏览

ios - NSURLSessionUploadTask 请求暂停和恢复导致 400

当应用程序进入后台时,我暂停了 Amazon S3 的上传任务,然后在前台恢复相同的任务。这有时会导致NSURLSession的委托方法didCompleteWithError:(NSError *)error抛出 400 和错误,nil并且无法上传。

我该如何解决这个问题?