问题标签 [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.
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 击中,添加到这个莫名其妙和间歇性问题的列表中。我可以找到苹果公司仍然没有任何责任。
编辑:
我怀疑这些错误代码是随机生成的,实际上仅表明沙盒已关闭。其他人遇到这个问题吗?
objective-c - 如何发送 POST 和 GET 请求?
我想将我的地址发送JSON
到一个 URL(POST
和GET
)。
我当前的请求代码不起作用。
使用ASIHTTPRequest
不是一个负责任的答案。
objective-c - NSURLSession + 多任务处理 + iOS 7
在我的应用程序中,即使我的应用程序处于待机模式,我也会尝试获取新内容并使其保持最新状态。为此,我想使用新的多任务 iOS 7 功能。
首先,我通过在 Info.plist 中添加密钥fetch
来启用后台获取。UIBackgroundModes
然后,我在 AppDelegate 中设置了最小后台获取间隔:
最后实施:
现在我应该用它NSURLSession
来实现我想做的事情: - 检查服务器上是否有新的图像文件 - 如果是,下载它 - 推送通知以通知用户新内容可用
我会尝试这样的事情performFetchWithCompletionHandler:
:
但我对 NSURLSession 不太满意。如果有人有示例代码可以使用它,我将很乐意尝试。
泰,佩比
ios - NSURLSession Threads:跟踪多个后台下载
所以我在主线程上创建我的下载
并将与下载关联的 NSManagedContextID 添加到 NSMutableDictionary,以便稍后在委托回调中检索它
我的self.downloadSession
上面是这样配置的
我的问题是委托回调似乎是在不同的线程上调用的
因此,当我访问 self.downloads 以获取正确的 objectID 时,我实际上是从与创建它的线程不同的线程访问 NSMutableDictionary,并且我相信 NSMutableDictionary 不是线程安全的。那么最好的解决方案是什么,我可以使用这样的东西
声明会话时,将委托队列设置为 mainQueue,这会导致在主线程上调用所有委托,但如果可能,我想将所有回调保留在后台线程上
objective-c - NSURLSession 委托:如何相应地实现我的自定义 SessionDelegate 类?
有一个单例类,称为 RequestManager,它将处理我的应用程序的不同模块和后台任务发出的请求。
然后我得到了另一个类,称为 SessionDelegate,它将处理请求期间的所有回调。
我的想法是将这些类中的函数封装起来,以免我的类重载,因为我需要很多带有 CommonCrypto 等的辅助类。
所以我设置快速编码一个协议 RequestFactoryDelegate 将接收到的数据发送给发起原始请求的发送者。
好吧,如果我有一个对象,它就可以工作,让我们称它为发送请求的 senderA,因为设置的委托始终是 senderA 本身。
问题发生在另一个对象上,例如 senderB 发送请求 - 甚至不是同时 - 但在 senderA 发送后不久。
因为 senderA 的请求还在进行中,senderB 给他设置了委托,结果是 senderB 的委托函数运行了两次。
嗯...我真的需要实现一个自己的自定义委托(无论是否与 RequestFactory 在同一个类中),但是如何处理回调方法以便我可以正确响应 senderA 或 senderB?
我的最后一个想法是重写 NSURLSessionTasks 类并实现自己的委托属性或块属性或其他任何东西。
提前谢谢了。
objective-c - NSURLSession 委托队列
这似乎很奇怪。我似乎无法在创建时成功设置 NSURLSession 的 delegateQueue。
这将导致以下输出。
看起来我delegateQueue
的被忽略了。我在设备和模拟器上都试过了。我还没有找到任何可以解释这一点的文档。有没有人有任何见解?
ios - 使用 NSURLSession 发送 POST 请求
更新:找到解决方案。您可以在文章末尾阅读。
我正在尝试使用 对远程 REST API 执行 POST 请求NSURLSession
。这个想法是使用两个参数发出请求:deviceId
和textContent
。
问题是服务器无法识别这些参数。服务器部分工作正常,因为我已经使用 POSTMAN for Google Chrome 发送了一个 POST 并且它工作得很好。
这是我现在正在使用的代码:
我已经尝试了相同的过程NSURLSessionUploadTask
:
有任何想法吗?
解决方案
我的方法的问题是我在Content-Type
所有请求中都发送了不正确的标头。因此,代码正常工作所需的唯一更改是删除Content-Type = application/json
HTTP 标头。所以正确的代码是这样的:
与其他参数一起发送图像
如果您需要使用NSURLSession
此处发布图像以及其他参数,您有一个示例:
ios - iOS 7 - NSURLSession 可恢复上传
我目前正在设计一个系统,用于将多个图像从应用程序上传到服务器。文件将存储在本地设备上,目前的想法是将它们分成块,然后逐块上传到服务器,等待成功消息返回,然后再上传下一个。
这个过程对用户来说应该是无缝的,他们应该按下一个按钮来提交所有图像,然后能够关闭应用程序并让它在后台继续。在 iOS 7 中,我看到您可以将上传的内容传递给新的 NSURLSession API,并让它处理独立于您的应用程序的上传任务。
我想知道是否有人知道这种转移有多可靠。如果我将整个图像传递给它,如果互联网连接中途中断会发生什么?后台传输服务是否稍后重试?我们的想法是我们可以上传一张图片,如果它在中途失败,我们可以在稍后恢复连接时从该点继续。
我们的一个想法是将文件分成块,然后将所有块作为单独的 NSURLSessionUploadTasks 传递,并假设它们最终都会被发送到服务器。
另一个是使用以下方法发送第一个块:
然后在completionHandler中再发送下一个chunk。我的问题是,如果在后台下一个块将有它的
这意味着它只会在插入时通过 WiFi 发送。我需要它在所有网络上工作并能够应对中断。
我不想要任何代码,只是建议这是否是实现这一目标的正确方法。
ios - 防止类在特定 iOS 版本上编译
我有一个正在使用的类,NSURLSession
但我仍然需要支持 iOS 6。当我尝试针对 iOS 6 进行编译时,它失败了,因为NSURLSession
不存在。
如何禁用此类为 iOS 6 编译?
delegates - 是否应该始终为具有自定义委托的 NSURLSessionUploadTasks 调用 didReceiveResponse?
我正在研究使用 NSURLSessionUploadTasks 来管理一些文件的后台上传。会话是使用以下方法创建的:
这是在符合 的类中创建的URLSessionDataTaskDelegate
,并专门定义:
并在每次调用这些代表之一时登录到控制台。
然后,使用以下代码创建上传任务:
但是,我得到的委托回调序列并不像预期的那样:
值得注意的是,正文数据按预期发送,但随后立即切换到didReceiveData
委托回调,didReceiveResponse
事先没有回调。这对我来说是一个意外的行为:我希望收到有关响应的信息,以便我可以正确设置数据,或者更好的是,将任务转换为下载任务以将响应保存到文件中。
如果上传任务在默认 URL 会话中提交,则调用 didReceiveResponse,我可以成功地将任务转换为后台下载任务。
我在 Apple 的文档中找不到任何关于是否didReceiveResponse
应该为NSURLSessionUploadTask
后台调用 s 的指示。似乎他们应该: 的文档表明它是 的子类,在行为上做了一些小的修改,但列出的差异都没有涉及不发送回调。没有一个特定于背景会话的文档提到这个限制。NSURLSessionUploadTask
NSURLSessionDataTask
didReceiveResponse
这是一个错误,还是错过/误解了一些解释后台上传任务不调用的文档didReceiveResponse
?