热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NSURLSessionDelegatefailingforlargefileson4G&iOS10only

ImhavingstrangeproblemwithNSURLSessionDelegate.Heresmycodefirst:我对NSURLSessionDelegate有一

I'm having strange problem with NSURLSessionDelegate. Here's my code first:

我对NSURLSessionDelegate有一些奇怪的问题。这是我的代码:

    class NetworkHandler: NSObject,NSURLSessionDelegate,NSURLSessionDownloadDelegate {

    lazy var downloadsSession: NSURLSession = {
        let cOnfiguration= NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("abc")
        let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
        return session
    }()

    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {

        print("finished")
    }

    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {

       print("\(String(format: "%.1f%% of %@",  progress * 100, totalSize))" )
}

    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64) {
        print("didResumeAtOffset: \(fileOffset)")
    }

    func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
        print("didCompleteWithError error=\(error)");
    }

    func URLSessionDidFinishEventsForBackgroundURLSession(session: NSURLSession) {
        if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
            if let completiOnHandler= appDelegate.backgroundSessionCompletionHandler {
                appDelegate.backgroundSessiOnCompletionHandler= nil
                dispatch_async(dispatch_get_main_queue(), {
                    completionHandler()
                })
            }
        }
    }
}

Here's my output when my file is ~20MB and I'm on 4G/LTE:

这是我的输出,当我的文件大约是20MB并且我在4G / LTE时:

didCompleteWithError error=Optional(Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL})

I've already checked my url has http and its a valid url. This code works 100% of the time when I'm on wifi or when file size is <~10MB or NOT iOS10. The file downloads till about 60% and then fail everytime. I'm just out of ideas to even justify myself what could go wrong.

我已经检查过我的网址有http和它的有效网址。当我在wifi上或文件大小<~10MB或不是iOS10时,此代码可以100%正常工作。文件下载到大约60%,然后每次都失败。我只是出于想法,甚至为自己辩解可能出错的地方。

The problem happens when it's iOS10 File size ~20MB 4G/LTE ONLY If I change any of the above 3 criteria, it works.

问题发生在它的iOS10文件大小~20MB 4G / LTE ONLY如果我改变上述3个标准中的任何一个,它就有效。

I tried Apple code and the problem is same

我试过Apple代码,问题是一样的

1 个解决方案

#1


1  

This error typically indicates that the URL scheme is unsupported (i.e. it is something other than http:// https:// or ftp://) or that they depend on an NSURLProtocol subclass that is part of your app (which is not allowed in a background session).

此错误通常表示URL方案不受支持(即,它不是http:// https://或ftp://)或者它们依赖于作为应用程序一部分的NSURLProtocol子类(不允许)在后台会议中)。

If you're getting that error with a supported URL scheme, unless you're doing something weird like subclassing NSURL or NSURLRequest, the problem is probably not something you can work around. File a bug with Apple and provide a minimal code snippet that reproduces the bug.

如果您使用受支持的URL方案获得该错误,除非您正在做一些奇怪的事情,如子类化NSURL或NSURLRequest,问题可能不是您可以解决的问题。向Apple提交一个错误,并提供一个可以重现错误的最小代码段。

And if you are subclassing NSURL or NSURLRequest, just know that these subclasses will not work correctly with NSURLSession—particularly with background sessions.

如果你是NSURL或NSURLRequest的子类,只要知道这些子类在NSURLSession中无法正常工作 - 特别是对于后台会话。

Edit: Apparently in iOS 10, there are known bugs that cause this error code instead of the expected one whenever the network drops out. The fix is to use the provided resume data to continue the transfer whenever it happens.

编辑:显然在iOS 10中,每当网络退出时,都会出现导致此错误代码而非预期错误的已知错误。修复方法是使用提供的恢复数据在发生时继续传输。


推荐阅读
  • 本文详细介绍了在使用 SmartUpload 组件进行文件上传时,如何正确配置和查找文件保存路径。通过具体的代码示例和步骤说明,帮助开发者快速解决上传路径配置的问题。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 本文详细介绍了JSP(Java Server Pages)的九大内置对象及其功能,探讨了JSP与Servlet之间的关系及差异,并提供了实际编码示例。此外,还讨论了网页开发中常见的编码转换问题以及JSP的两种页面跳转方式。 ... [详细]
  • IniOS10,howcanIsetlocalnotificationstorepeatinminutesstartingfromaparticulardateti ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
author-avatar
mobiledu2502926247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有