Загрузка фона Alamofire не печатает Progress, пока приложение находится в фоновом режиме - PullRequest
0 голосов
/ 09 июня 2018

Я загружаю PDF файл на сервер, используя Alamofire.Я создал backgroundSessionManager, чтобы приложение загружало файл в фоновом режиме.Код работает отлично, так как я получаю вызов по backgroundCompletionHandler из AppDelegate метода handleEventsForBackgroundURLSession.

Прогресс в том, что я показываю прогресс, и когда приложение переходит в фоновый режим, прогресс застревает, и .uploadProgress завершение также не вызывает.Из-за этого, когда пользователь уходит в фоновом режиме и через некоторое время, когда возвращается, прогресс не увеличивается.

Общий экземпляр:

class Networking {
    static let sharedInstance = Networking()
    public var backgroundSessionManager: Alamofire.SessionManager // your web services you intend to keep running when the system backgrounds your app will use this
    private init() {
        self.backgroundSessionManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.background(withIdentifier: "com.dw.myapp"))

        var backgroundCompletionHandler: (() -> Void)? {
            get {
                return backgroundSessionManager.backgroundCompletionHandler
            }
            set {
                backgroundSessionManager.backgroundCompletionHandler = newValue
            }
        }
    }
}

Загрузка файлакод

Networking.sharedInstance.backgroundSessionManager.upload(multipartFormData: { (multipartData) in
 }, usingThreshold: UInt64.init(), to: "\(url)", method: .post, headers: headers) { (result) in
            switch result {
            case .success(let upload, _, _):
                upload.uploadProgress(closure: { (progress) in
                //Does not call while app is in background
                        Helper.dispatchMain {
                            print(progress)
                            print("Upload Time ", Date())
                        }
                    })
                    upload.responseJSON { response in
                        print("Response Time ", Date())
                        print("Response Time ", Date())
                    }
                case .failure(let error):
                    completion!(["message" : error],false)
                }
            }

У меня поиск по SO и странице github, но я не нашел решения.Любой может направлять, если я делаю какую-либо ошибку?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Попробуйте включить Возможность подключения внешнего аксессуара в возможностях фонового режима вашего приложения.

0 голосов
/ 09 июня 2018

Did you enable background services in xcode capabilities

Надеюсь, это сработает, дайте мне знать, если вы все еще сталкиваетесь с этим

...