后台上传在Swift中不起作用

时间:2018-08-06 13:50:00

标签: ios swift urlsession background-fetch

我正在尝试实现一个代码,在该代码中,将文件上传到AWS服务器后不久将调用API,但必须处于后台模式。 AWS sdk可以在后台模式下将文件上传到其服务器中,但是以下代码无法正常工作。

ViewController.swift

<div class="content">Main content of the page goes here</div>

VaultWebService.swift

.content{
min-height:calc(100vh - /*menu (and everything above the content) height*/ )
}

最后。. Appdelegate.swift

position:fixed;bottom:0;z-index:-1

但是永远不会调用此委托方法,而将其用于AWS上传。我认为这是背景background对我不起作用的主要原因。卡住2天。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

背景下载事件不会在模拟器上触发。您只能在真实设备上进行测试。

答案 1 :(得分:0)

如果您通过httpBody创建上传任务,则会忽略

uploadTask(withStreamedRequest:)。它需要实现urlSession(_:task:needNewBodyStream:)委托回调。对于后台模式,它不适合。尝试改用uploadTask(with request: URLRequest, from bodyData: Data)。而且看起来VaultUploadWebService没有对session对象的任何引用。尝试将session存储为VaultUploadWebService的成员。

答案 2 :(得分:0)

uploadTask(withStreamedRequest:...) 与后台 URL 会话不兼容。改用 uploadTask(with:request, fromFile:...)