2016-07-05 13 views
0

Ich bin derzeit versucht, die Standardwerte für timeoutIntervalForRequest und timeoutIntervalForResource von NSURLSessionConfiguration für alle Alamofire Ferngespräche in meinem iOS-App zu verringern, da ich es nicht wollen, 60 Sekunden warten und 7 Tage sind.Alamofire ignoriert timeoutIntervalForRequest und timeoutIntervalForResource Parameter

Dies ist mein Code:

Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForRequest = 30 
Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForResource = 30 

let parameters = [ 
    "foo": [1,2,3], 
    "bar": [ 
     "baz": "qux" 
    ] 
] 

Alamofire.Manager.sharedInstance.request(.POST, "someURL", parameters: parameters, encoding: .JSON) { 
    (response) in 

    print(response.timeline) 
} 

Das ist mein log:

Timeline: { "Latency": 60.977 secs, "Request Duration": 60.977 secs, "Serialization Duration": 0.000 secs, "Total Duration": 60.977 secs } 

Wie Sie die Request Duration Wert ist länger als 30 Sekunden zu sehen.

Kommt es darauf an, dass ich Alamofire.Manager.sharedInstance.request anstelle von Alamofire.request verwende?

Antwort

0

Ich habe eine issue auf der offiziellen Alamofire GitHub Seite geöffnet und das war ihre Meinung dazu:

die Werte der Konfiguration in einer Sitzung ändern, die bereits aktiv ist hat keine Wirkung. Laut Apples Dokumentation auf NSURLSession: Changing mutable values within the configuration object has no effect on the current session, but you can create a new session with the modified configuration object.

Ich schlage vor, Sie Ihre Manager-Instanz erstellen und seine Konfiguration anpassen, wie pro our documentation.

1

Ich bin mir ziemlich sicher, dass es ist, weil Sie die Konfiguration des Standard-Manager nicht ändern können (oder zumindest ich glaube nicht, dass Sie möglicherweise ein Fehler sein).

Versuchen Sie, eine neue Instanz zu erstellen und eine benutzerdefinierte NSURLSessionConfiguration hinzuzufügen.

ex:

var manager:Alamofire.Manager? 

func initManager(timeoutInterval:Double) { 
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 

    configuration.timeoutIntervalForRequest = timeoutInterval 
    configuration.timeoutIntervalForResource = timeoutInterval 

    manager = Alamofire.Manager(configuration: configuration) 
} 

// then use manager!.request to do your request 
Verwandte Themen