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

ios - 使用 StoreKit 的未记录的 NSURLErrorDomain 错误代码(-1001、-1003 和 -1004)

我正在编写与 StoreKit 相关的代码,当我尝试将购买添加到队列中时,我收到了一些相当令人不安的错误代码。

到目前为止,我遇到了错误代码 -1003 和 -1004,我在互联网上找不到关于这些代码的任何信息。

运行产品请求会返回有效的产品编号,所以我不知道为什么调用[[SKPaymentQueue defaultQueue] addPayment:aPayment];会因这个未记录的问题而失败。

相同的代码在一台设备上也可以正常工作,而在另一台设备上则不行。

到目前为止,我的问题尚未得到解答:

这些代码是什么意思?我怎样才能缓解这个问题?为什么它们发生在购买尝试而不是产品请求时?

我已经完成的故障排除包括重新生成签名证书和配置文件、更改 WiFi 网络、清理、构建和重新安装所有相关的软件和组件,但这些事情都没有单独或一起帮助解决问题。

编辑:

在 Apple 开发者论坛上找到了关于此的讨论,但 Apple 没有人回复:https ://devforums.apple.com/thread/107121?tstart=75 (需要 iOS 开发者帐户才能查看)

编辑:

我今天被错误代码 -1001 击中,添加到这个莫名其妙和间歇性问题的列表中。我可以找到苹果公司仍然没有任何责任。

编辑:

我怀疑这些错误代码是随机生成的,实际上仅表明沙盒已关闭。其他人遇到这个问题吗?

0 投票
4 回答
95648 浏览

objective-c - 如何发送 POST 和 GET 请求?

我想将我的地址发送JSON到一个 URL(POSTGET)。


我当前的请求代码不起作用。


使用ASIHTTPRequest不是一个负责任答案。

0 投票
2 回答
5643 浏览

objective-c - NSURLSession + 多任务处理 + iOS 7

在我的应用程序中,即使我的应用程序处于待机模式,我也会尝试获取新内容并使其保持最新状态。为此,我想使用新的多任务 iOS 7 功能。

首先,我通过在 Info.plist 中添加密钥fetch来启用后台获取。UIBackgroundModes

然后,我在 AppDelegate 中设置了最小后台获取间隔:

最后实施:

现在我应该用它NSURLSession来实现我想做的事情: - 检查服务器上是否有新的图像文件 - 如果是,下载它 - 推送通知以通知用户新内容可用

我会尝试这样的事情performFetchWithCompletionHandler:

但我对 NSURLSession 不太满意。如果有人有示例代码可以使用它,我将很乐意尝试。

泰,佩比

0 投票
2 回答
15123 浏览

ios - NSURLSession Threads:跟踪多个后台下载

所以我在主线程上创建我的下载

并将与下载关联的 NSManagedContextID 添加到 NSMutableDictionary,以便稍后在委托回调中检索它

我的self.downloadSession上面是这样配置的

我的问题是委托回调似乎是在不同的线程上调用的

因此,当我访问 self.downloads 以获取正确的 objectID 时,我实际上是从与创建它的线程不同的线程访问 NSMutableDictionary,并且我相信 NSMutableDictionary 不是线程安全的。那么最好的解决方案是什么,我可以使用这样的东西

声明会话时,将委托队列设置为 mainQueue,这会导致在主线程上调用所有委托,但如果可能,我想将所有回调保留在后台线程上

0 投票
3 回答
5109 浏览

objective-c - NSURLSession 委托:如何相应地实现我的自定义 SessionDelegate 类?

有一个单例类,称为 RequestManager,它将处理我的应用程序的不同模块和后台任务发出的请求。

然后我得到了另一个类,称为 SessionDelegate,它将处理请求期间的所有回调。

我的想法是将这些类中的函数封装起来,以免我的类重载,因为我需要很多带有 CommonCrypto 等的辅助类。

所以我设置快速编码一个协议 RequestFactoryDe​​legate 将接收到的数据发送给发起原始请求的发送者。

好吧,如果我有一个对象,它就可以工作,让我们称它为发送请求的 senderA,因为设置的委托始终是 senderA 本身。

问题发生在另一个对象上,例如 senderB 发送请求 - 甚至不是同时 - 但在 senderA 发送后不久。

因为 senderA 的请求还在进行中,senderB 给他设置了委托,结果是 senderB 的委托函数运行了两次。

嗯...我真的需要实现一个自己的自定义委托(无论是否与 RequestFactory 在同一个类中),但是如何处理回调方法以便我可以正确响应 senderA 或 senderB?

我的最后一个想法是重写 NSURLSessionTasks 类并实现自己的委托属性或块属性或其他任何东西。

提前谢谢了。

0 投票
2 回答
6649 浏览

objective-c - NSURLSession 委托队列

这似乎很奇怪。我似乎无法在创建时成功设置 NSURLSession 的 delegateQueue。

这将导致以下输出。

看起来我delegateQueue的被忽略了。我在设备和模拟器上都试过了。我还没有找到任何可以解释这一点的文档。有没有人有任何见解?

0 投票
7 回答
183051 浏览

ios - 使用 NSURLSession 发送 POST 请求

更新:找到解决方案。您可以在文章末尾阅读。

我正在尝试使用 对远程 REST API 执行 POST 请求NSURLSession。这个想法是使用两个参数发出请求:deviceIdtextContent

问题是服务器无法识别这些参数。服务器部分工作正常,因为我已经使用 POSTMAN for Google Chrome 发送了一个 POST 并且它工作得很好。

这是我现在正在使用的代码:

我已经尝试了相同的过程NSURLSessionUploadTask

有任何想法吗?

解决方案

我的方法的问题是我在Content-Type所有请求中都发送了不正确的标头。因此,代码正常工作所需的唯一更改是删除Content-Type = application/jsonHTTP 标头。所以正确的代码是这样的:

与其他参数一起发送图像

如果您需要使用NSURLSession此处发布图像以及其他参数,您有一个示例:

0 投票
1 回答
4940 浏览

ios - iOS 7 - NSURLSession 可恢复上传

我目前正在设计一个系统,用于将多个图像从应用程序上传到服务器。文件将存储在本地设备上,目前的想法是将它们分成块,然后逐块上传到服务器,等待成功消息返回,然后再上传下一个。

这个过程对用户来说应该是无缝的,他们应该按下一个按钮来提交所有图像,然后能够关闭应用程序并让它在后台继续。在 iOS 7 中,我看到您可以将上传的内容传递给新的 NSURLSession API,并让它处理独立于您的应用程序的上传任务。

我想知道是否有人知道这种转移有多可靠。如果我将整个图像传递给它,如果互联网连接中途中断会发生什么?后台传输服务是否稍后重试?我们的想法是我们可以上传一张图片,如果它在中途失败,我们可以在稍后恢复连接时从该点继续。

我们的一个想法是将文件分成块,然后将所有块作为单独的 NSURLSessionUploadTasks 传递,并假设它们最终都会被发送到服务器。

另一个是使用以下方法发送第一个块:

然后在completionHandler中再发送下一个chunk。我的问题是,如果在后台下一个块将有它的

这意味着它只会在插入时通过 WiFi 发送。我需要它在所有网络上工作并能够应对中断。

我不想要任何代码,只是建议这是否是实现这一目标的正确方法。

0 投票
1 回答
213 浏览

ios - 防止类在特定 iOS 版本上编译

我有一个正在使用的类,NSURLSession但我仍然需要支持 iOS 6。当我尝试针对 iOS 6 进行编译时,它失败了,因为NSURLSession不存在。

如何禁用此类为 iOS 6 编译?

0 投票
1 回答
2692 浏览

delegates - 是否应该始终为具有自定义委托的 NSURLSessionUploadTasks 调用 didReceiveResponse?

我正在研究使用 NSURLSessionUploadTasks 来管理一些文件的后台上传。会话是使用以下方法创建的:

这是在符合 的类中创建的URLSessionDataTaskDelegate,并专门定义:

并在每次调用这些代表之一时登录到控制台。

然后,使用以下代码创建上传任务:

但是,我得到的委托回调序列并不像预期的那样:

值得注意的是,正文数据按预期发送,但随后立即切换到didReceiveData委托回调,didReceiveResponse事先没有回调。这对我来说是一个意外的行为:我希望收到有关响应的信息,以便我可以正确设置数据,或者更好的是,将任务转换为下载任务以将响应保存到文件中。

如果上传任务在默认 URL 会话中提交,则调用 didReceiveResponse,我可以成功地将任务转换为后台下载任务。

我在 Apple 的文档中找不到任何关于是否didReceiveResponse应该为NSURLSessionUploadTask后台调用 s 的指示。似乎他们应该: 的文档表明它是 的子类,行为上做了一些小的修改,但列出的差异都没有涉及不发送回调。没有一个特定于背景会话的文档提到这个限制。NSURLSessionUploadTaskNSURLSessionDataTaskdidReceiveResponse

这是一个错误,还是错过/误解了一些解释后台上传任务不调用的文档didReceiveResponse