Thursday, October 8, 2026
HomeiOS Developmentios - Alamofire Supervisor could not cancel job

ios – Alamofire Supervisor could not cancel job

[ad_1]

I am attempting to cancel present job if the web page willDissappear with utilizing Alamofire . I’ve a AlamofireManager class that manages some configurations is :

class AlamofireManager : Alamofire.SessionManager{
    static public let supervisor = AlamofireManager.generateManager()

    class func generateManager() -> AlamofireManager{
        let configuration = URLSessionConfiguration.default
        let defaultHeaders =  Alamofire.SessionManager.defaultHTTPHeaders

        configuration.httpAdditionalHeaders = defaultHeaders
        configuration.timeoutIntervalForRequest = 3

        let supervisor = AlamofireManager(configuration : configuration)
        return supervisor
    }
}

In my interactor I name companies like

class AddNewCollectionFromAllCollectionInteractor{
    var collectionService = CollectionService(supervisor: AlamofireManager.supervisor)
    weak var presenter : AddNewCollectionFromAllCollectionPresenter!
}

extension AddNewCollectionFromAllCollectionInteractor : 
AddNewCollectionFromAllCollectionInteractorProtocol{

    func getAllCollectedProducts(request: CollectionGetAllSavedProductRequestModel) {
        collectionService.getAllSavedProductList(request: request, accomplished: {[self](ret , error , statusCode) in
            if error == nil {
                presenter.listindDataComeFromServer(information: ret ?? Information(), statusCode: statusCode)
            }else{
                presenter.serverError(error: error!)
            }
        })
    }


    func cancelTask(){
        collectionService.cancelManager()
    }
}

My view seems like :

  override func viewDidDisappear(_ animated: Bool) {
        tremendous.viewDidDisappear(true)
        presenter.cancelTask() // presenter goes interactor.cancelTask()
  }

That is my CollectionService :

class CollectionService {
    personal let supervisor : AlamofireManager!

    init(supervisor : AlamofireManager) {
        self.supervisor = supervisor
    }

    func cancelManager(){
        supervisor.session.getAllTasks(completionHandler: { duties in
            duties.forEach{ $0.cancel()}    
        })
    }

}

And the final request is :

func getAllSavedProductList(request : CollectionGetAllSavedProductRequestModel , accomplished : @escaping (Information? , Error? , Int) -> Void){
        // params header exc
        self.supervisor.request(url, methodology: .get, parameters: mannequin, encoding: URLEncoding.queryString, headers: headers).responseString(completionHandler: { ret in
            DispatchQueue.essential.asyncAfter(deadline: .now() + 3, execute: {
                swap ret.consequence{
                case .success(_):
                    Utils.hideLoadGif()
                    accomplished(ret.information , nil , ret.response?.statusCode ?? 200)
                case .failure(let error):
                    Utils.hideLoadGif()
                    accomplished(nil,error , ret.response?.statusCode ?? 500)
                }
            })
           
        })
}

I added DispatchQueue.essential.asyncAfter to check it
Anyway when view will disappear beneath code is working

 func cancelManager(){
    supervisor.session.getAllTasks(completionHandler: { duties in
        duties.forEach{ $0.cancel()}
        
    })
}

However the duties rely is all the time zero. I search a number of questions on it , a number of utilizing this methodology or supervisor.session.invalidateAndCancel() this each shouldn’t be working as a result of I feel supervisor cannot see the present job due to this fact the duties rely is all the time zero.

Do I miss one thing or my Alamofire class cannot deal with this example.

[ad_2]

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments