2016-10-23 31 views
5

Tôi đang sử dụng Alamofire để thực hiện cuộc gọi đến một dịch vụ web mất một thời gian khá dài để tải. Nếu ứng dụng chạy ngầm, tôi gặp khó khăn với trình tải của tôi khi tôi quay lại ứng dụng. Tôi tưởng tượng đó là bởi vì cuộc gọi không bao giờ trả lại bất cứ điều gì để xử lý hoàn thành của tôi. Làm thế nào tôi có thể giải quyết vấn đề này?Yêu cầu Alamofire bị kẹt khi nhập vào nền?

+0

http://stackoverflow.com/questions/34328678/web-service-call-in-background-mode -ios – Sofeda

+0

http://redth.codes/ios7-recipe-background-fetching/ – Sofeda

+0

chúng có thể giúp bạn – Sofeda

Trả lời

4

Bạn có thể sử dụng tính năng tìm nạp nền để giải quyết vấn đề này. Nó có thể được thực hiện theo cách sau trong Swift 3:

var backgroundTask: UIBackgroundTaskIdentifier? // global variable   

    backgroundTask = UIApplication.shared.beginBackgroundTask(withName: "backgroundTask") { 
     // Cleanup code should be written here so that you won't see the loader 

     UIApplication.shared.endBackgroundTask(self.backgroundTask!) 
     self.backgroundTask = UIBackgroundTaskInvalid 
    } 

Gọi cho dịch vụ alamofire của bạn sau dòng này. Trong trình xử lý hoàn thành, kết thúc tác vụ bằng các dòng dưới đây.

UIApplication.shared.endBackgroundTask(self.backgroundTask!) 
    self.backgroundTask = UIBackgroundTaskInvalid 

Xin lưu ý rằng ứng dụng có thời gian nền (backgroundTimeRemaining thuộc tính) còn lại trước khi chuyển sang trạng thái không hoạt động. Bạn phải hoàn thành nhiệm vụ trước thời gian đó. Trình xử lý được gọi ngay trước khi thời gian nền còn lại đạt đến 0. Ngoài ra, mỗi cuộc gọi đến phương thức beginBackgroundTask(withName:){} phải được cân bằng bởi một cuộc gọi phù hợp với phương thức endBackgroundTask:.

Để tạo mã được cung cấp ở trên cơ quan, bạn cần điều chỉnh cài đặt trong ứng dụng của mình. Tới "Mục tiêu" và bấm vào "khả năng" để làm những điều sau đây thay đổi

Changes to made in "Target" section

Sau đó, đi đến file info.plist của bạn, và mở nó như là nguồn để thêm đoạn mã sau.

enter image description here

Tôi hy vọng điều này sẽ giúp bạn. Nếu bạn cần thông tin chi tiết hơn, những liên kết có thể giúp

Các vấn đề liên quan