Ho domanda su alamofire metodi di timeout, prima di tutto, il mio inglese potrebbe non essere sufficiente per farvi ragazzi a capire quello che ho detto ... ma io stanco di spiegare la mia domanda2,1 SWIFT alamofire metodo timeout
nel mio progetto, ho usato alamofire, per qualche ragione, ho bisogno di assicurarmi che la mia app funzioni di un'area di connessione scadente. quindi sto pensando di usare il metodo timeout.
ho visto ci sono alcune persone hanno detto, utilizzare Soluzione 1:
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForRequest = 2 // seconds
self.alamofireManager = Alamofire.Manager(configuration: configuration)
self.alamofireManager!.request(.GET, "http://example.com/")
.response { (request, response, data, error) in
volontà risolto il problema, ma nel mio caso, ho visto la zona di debug ha detto la mia richiesta è "cancel"
così ho provato un'altra soluzione che ho visto qui (StackOverflow) soluzione 2:
let manager = Alamofire.Manager.sharedInstance
manager.session.configuration.timeoutIntervalForRequest = 5
manager.request(.POST, url, parameters: params, encoding: .JSON, headers: nil).response(queue: dispatch_get_main_queue()) { (Request, res, data, error) -> Void in{}
questo metodo sembra dovrebbe funzionare, ma solo se i lascia che la mia app sia passata in secondo piano e reattivo alla mia app, l'area di debug mostra la richiesta "timeout", altrimenti l'area di debug non mostrava nulla, a meno che non lo avessi commutato in background e reattivo all'app.
sto usando Xcode 7.1 e iOS 9.0
UPDATE: se ho usato Soluzione 2, se lascio il requesttimeout = 5, l'area di debug mostrerà l ' "errore di timeout", ma ci vuole più di 5 sec ... a volte mostrerà circa 30s, ma a volte più di 1 min ....
UPDATE2: ho scoperto qual è il problema. il problema è che se si utilizza il framework reachabilty per rilevare lo stato della connessione, il sistema potrebbe rilevare che la connessione è attiva o meno, quindi mostrerà il timeout della richiesta dopo l'isReachable (potrebbe richiedere fino a 1 minuto).
@oleg grazie per spiegare, nel mio caso, stavo cercando di fare il mio progetto di lavoro sulla zona povera di connessione, come ad esempio la metropolitana o in metropolitana tunnel. così ho aperto il kit di sviluppo su iphone, dove il condizionatore di rete. rendere la configurazione come perdita del 100%. quindi non so perché ci sia voluto così tanto tempo che fammi sapere è timeout .... –
sei riuscito a trovare una soluzione funzionante? –