SIGABRT:后台会话不支持从 NSData 上传任务

Posted

技术标签:

【中文标题】SIGABRT:后台会话不支持从 NSData 上传任务【英文标题】:SIGABRT :Upload tasks from NSData are not supported in background sessions 【发布时间】:2017-03-26 18:54:28 【问题描述】:

我正在使用 Alamofire 进行上传。我需要将多个图像和视频上传到我的服务器。我甚至需要将图像和视频上传到后台会话中

    let bundleIdentifier = Bundle.main.bundleIdentifier
            let configuration = URLSessionConfiguration.background(withIdentifier: bundleIdentifier!)
            configuration.timeoutIntervalForRequest = 200 // seconds
            configuration.timeoutIntervalForResource = 200
            self.alamoFireManager = Alamofire.SessionManager(configuration: configuration)

I am using above code setup alamofire for background configuration.
            alamoFireManager?.upload(data!, with: (router))
                .uploadProgress  progress in // main queue by default
                    print("Upload Progress: \(progress.fractionCompleted)")
                .validate()
                .responseJSON  [weak self] response in

但是当我使用 SIGABRT 进入后台时,我的应用程序崩溃了

让我知道我做错了什么,

【问题讨论】:

【参考方案1】:

这是 Apple 的 NSUrlSession 实现的限制。 Apple 不允许将 NSData 用于后台会话。但允许上传文件。因此,作为一种解决方法,您可以尝试将数据写入文件并上传该文件。您可以在此处关注实现:

https://***.com/a/22107789/1921759

【讨论】:

以上是关于SIGABRT:后台会话不支持从 NSData 上传任务的主要内容,如果未能解决你的问题,请参考以下文章

NSData 的 -dataWithContentsOfURL: 是不是在后台线程中工作?

应用程序在 Nsdata 持久存储调用上崩溃

从 NSData 中查找视频类型

将 telnet 会话记录为后台进程

为啥以下代码从 NSData 返回不正确的值?

从 NSData 中提取子数据而不复制