NSURLSessionDownloadTaskDelegate JSON 响应

2024-01-24

我正在运行后台 NSURLSession 会话,并且正在尝试找出一种方法来从 NSURLDownloadTaskDelegate 回调之一中获取 JSON 响应。我已将会话配置为接受 JSON 响应。

NSURLSessionConfiguration *backgroundSession = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.Att.Locker.BackgroundUpload"];
backgroundSession.HTTPAdditionalHeaders = @{ @"Accept":@"application/json"};
session = [NSURLSession sessionWithConfiguration:backgroundSession delegate:uploader delegateQueue:nil];

我可以使用以下回调轻松解析 NSURLSessionDownloadTasks 的 JSON 响应。它将 JSON 响应以 NSURL 的形式写入沙箱。

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location  {

  //Reading the Json response from the sandbox using the NSURL parameter
}

我的问题是,如果我遇到错误,则不会调用上面的回调,它似乎只有在成功下载的情况下才会被调用。由于我使用的是后台会话,因此我无法使用任何 NSURLSessionDataDelegate 回调。我只能使用 NSURLSessionDownloadTaskDelegate 和 NSURLSessionTaskDelegate,而我可以使用以下回调获取任务响应。我在响应中没有看到 JSON。

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {


NSHTTPURLResponse *response = (NSHTTPURLResponse *)downloadTask.response;
NSDictionary *httpResponse = [response allHeaderFields];

NSLog(@"Response Header Fields:%@",[httpResponse allKeys]);
}

NSURL连接 has a 接收到数据参数给了我们一个NSData我们可以使用它来获取 JSON 响应的对象。我在委托回调中没有看到这一点NSURL会话除了NSURL数据任务但是我们不能在后台使用数据任务,那么我们应该如何获取 JSON 响应呢?任何帮助表示赞赏

EDIT:

我通常在后台运行应用程序时遇到此问题(主要是当它被踢出内存而不仅仅是挂起时)。我已经在 appDelegate 中实现了回调,并且能够重新与会话关联。我认为 didFinishDownloadingToURL 仅在成功完成任务的情况下才会被调用,但是当任务失败时,不会调用保证它会被调用,但另一方面 didCompleteWithError 会在每次失败时被调用


使用下载任务,您可以使用以下方式获取数据didFinishDownloadingToURL正如你所说。

所有 NSURLSession 任务也都有这个委托。如果你进入这里并且错误不为零,那么你就有错误了。不需要完成即可进入这里。如果它确实出现错误,那么委托didFinishDownloadingToURL不会被调用。

如果没有错误,并且所有数据都已下载,那么两个代表都会被调用。

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
    NSLog(@"didCompleteWithError");
}

EDIT:

因此,必须打赌设置不正确,因为必须有一种方法来获取数据。

您是否正在实施应用程序:handleEventsForBackgroundURLSession:completionHandler https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application%3ahandleEventsForBackgroundURLSession%3acompletionHandler%3a:在您的 AppDelegate 中,它将您的应用程序挂接到完成处理程序以获取委托调用?

我强烈推荐观看 2013 年 WWDC 会议#705,“基金会网络的最新动态” https://developer.apple.com/wwdc/videos/。后台会议谈话在 32 分钟左右开始,代码演示在 37:50 左右开始

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSURLSessionDownloadTaskDelegate JSON 响应 的相关文章

  • 使用 NSDateFormatter 和 TimeZone(不带 GMT 时间修饰符)将 NSDate 转换为 NSString

    我正在初始化我的 NSDateFormatter NSDateFormatter dateFormatter NSDateFormatter alloc init autorelease dateFormatter setLocale NS
  • 如何计算CLLocationDistance的中心坐标

    我想计算我的位置和一些注释之间的中心点 到目前为止我已经这样做了 CLLocation myLoc self locMgr location MKPointAnnotation middleAnnotation locationV anno
  • 为什么我无法更改 UIBarButtonItem 的标题?

    我想改变UIBarButtonItem s title 但这段代码不起作用 void viewDidLoad self smay void smay AppDelegate apd AppDelegate UIApplication sha
  • 通过选择器使用自定义比较器的 NSSortDescriptor 问题

    我想将排序描述符与自定义比较器一起使用 NSSortDescriptor sortDescriptor NSSortDescriptor alloc initWithKey object dateTime ascending YES sel
  • 如何让位置音频在 SceneKit 中工作?

    我在使位置音频在 SceneKit 中工作时遇到问题 从 Xcode 生成的 SceneKit 游戏模板开始 我将以下代码添加到handleTap 方法的末尾 let ship scnView scene rootNode childNod
  • 在后台运行 URL 请求

    我想在一定的时间间隔内发出 url 请求 例如 每 10 分钟应用程序应该发出一次 url 调用并获取一些 json 数据 应用程序在后台运行时应该能够执行此操作 这可以做到吗 如果是这样 这是否违反 Apple 服务条款 有什么限制吗 i
  • iPhone 和 iPad 滚动结束

    我正在制作一些无限滚动的 jQuery 跨浏览器画廊 我工作得很好 但在 iPhone 上 我想也在 iPad 上 而不是相等的值 我有一些不成比例的值不匹配 window scrollTop document height window
  • UIView 周围的虚线边框

    如何在周围添加虚线边框UIView 像这样的东西 如果您喜欢子层 还有另一种方法 在您的自定义视图的 init 中 输入以下内容 border 是 ivar border CAShapeLayer layer border strokeCo
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • Xcode 中的 NSObject 描述和自定义摘要

    我覆盖对象的 NSString description但是 Xcode 总是显示error summary string parsing error在变量视图的摘要字段中 我当前的实现如下 NSString description retu
  • 移动设备上的 TensorFlow(Android、iOS、Windows Phone)

    我目前正在寻找不同的深度学习框架 特别是用于训练和部署卷积神经网络 要求是 它可以在带有 GPU 的普通 PC 上进行训练 但训练后的模型必须部署在三个主要的移动操作系统上 即 Android iOS 和 Windows Phone Ten
  • admob ios7错误音频框架

    我正在将 admob SDK 当前的 集成到我的上一个应用程序 IOS7 Xcode5 中 并且出现了一个新错误 在新项目上也是如此 我想我错过了一些东西 但我多次重新启动该过程 但错误仍然存 在 Undefined symbols for
  • iOS Twitter NSURLErrorDomain 代码=-1012

    我正在尝试通过在我的应用程序中注册 Twitter 来获取用户的联系方式 我发现this https github com malcommac DMTwitterOAuthgithub上的项目看起来非常好 我只遇到一个问题 如果我使用来自
  • 如何将NSTextView的格式化内容转换为字符串

    我需要将 NSTextView 的内容从 Mac 应用程序传输到 iOS 应用程序 我使用 XML 作为传输文件格式 所以我需要将 NSTextView 的内容 文本 字体 颜色等 保存为字符串 有什么办法可以做到这一点吗 一种方法是存档
  • 如何使用 MonoTouch 在 UIKeyboard 之上添加 UIToolbar?

    我按照 Obj C 中的示例进行操作定制 iPhone 键盘 https stackoverflow com questions 1610542 custom iphone keyboard 1612549 1612549但是 为了在 Wi
  • 应用程序仅启用纵向,但 UIImagePickerController 在 iOS6 中旋转

    请注意 下面的答案 不适用于 iOS6 所以我仍然需要答案 我的应用程序仅启用纵向模式 但是 如果我将 UIImagePickerController 作为子视图嵌入其中 并旋转设备 则顶部和底部栏将保持在同一位置 但 UIImagePic
  • 使用 MPMoviePlayerViewController 时的 iPad 旋转错误

    问题摘要 使用 MPMoviePlayerViewController 播放视频时更改 iPad 设备或模拟器的方向会导致视频播放器关闭时旋转状态不一致 这是 iPad SDK 3 2 中的一个已知错误 记录于http www openra
  • 游戏中心玩家显示名称在沙盒中始终为“我”

    我使用用户的游戏中心显示名称和玩家 ID 来维护他们在我的服务器上的个人资料 当我进行测试时 一切似乎都正确执行 但我的沙箱帐户的用户显示名称显示为 Me 而不是附加到我的帐户的显示名称 Billybobbo 这应该在沙盒模式下发生吗 Co
  • iOS 11 中的密码自动填充快速输入栏

    iOS 11 中引入了一项新功能 应用程序密码自动填充 此功能允许用户直接从键盘快速输入栏使用其应用程序中保存的密码 https techcrunch com 2017 06 08 ios 11s new password autofill
  • 构建 iOS 应用程序后退出代码 1 错误

    我正在尝试使用 RestKit 构建我的项目 当我构建它时 我收到以下错误 我尝试使用 Apple LLVM 3 0 和 LLVM GCC 4 2 进行编译 两者都产生相同的结果 任何人有任何想法是什么导致了这个问题 Ld Users Ji

随机推荐