2017-01-19 6 views
2

私はSwift 3.0Alamofire 4を使用しています。私はシングルトンネットワーククラスを使用してサーバにAPIリクエストを作成しています。インターネットが存在しない場合、Alamofireは閉鎖を完了して障害ハンドラを実行するのに約30秒かかります。ここに私のコードは次のとおりです。Alamofireはネットワークに接続していないときにタイムアウトに時間がかかるのはなぜですか?

func performRequest(_ url:String,completionHandler:@escaping (_ Success:Bool,AnyObject?) -> Void) { 

    Alamofire.request(url).validate().responseJSON { response in 

     if response.result.isSuccess { //Request was successful 
      self.errorCount = 0 
      completionHandler(true,response.result.value as AnyObject?) 
     } else { 
      print("failure occured") 
      self.setNoInternetDialogAppear() 
     } 
    } 
} 

また、私はこのコードを使用してタイムアウトを設定しようとしたが、それは効果がありません:

`Alamofire.SessionManager.default.session.configuration.timeoutIntervalForRequest = 2000` 

私は最近スウィフト2.2とAlamofire 3からの私のコードを移行してのみ開始されましたそれ以来起きている。 TIA

答えて

0
var alamoFireManager = Alamofire.SessionManager.default 
self.alamoFireManager.session.configuration.timeoutIntervalForRequest = 2000 
.... 
self.alamoFireManager.request(...) 

変数を使用しています。

+0

ありがとう。ちょうどこれを試して、まだ長いタイムアウトを経験しています。 – Ollie

+0

タイムアウトはちょうど60秒だと思われます。私は、出力の時間とともに "print"メソッドを配置しました。 – Ollie

+0

奇妙な!私はこの正確な方法を以下のように使用しています: \tポッド 'AlamofireDomain'、 '4.1' 申し訳ありません、もう助けてください。 – karnett

0

アラモファイアリクエストを開始する前に、ネットワーク接続をテストする方がよいでしょう。この機能を試してください。

class func isConnectedToNetwork() -> Bool { 

    var zeroAddress = sockaddr_in() 
    zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size) 
    zeroAddress.sin_family = sa_family_t(AF_INET) 

    guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, { 
     $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { 
      SCNetworkReachabilityCreateWithAddress(nil, $0) 
     } 
    }) else { 
     return false 
    } 

    var flags: SCNetworkReachabilityFlags = [] 
    if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) { 
     return false 
    } 

    let isReachable = flags.contains(.reachable) 
    let needsConnection = flags.contains(.connectionRequired) 

    return (isReachable && !needsConnection) 
} 
関連する問題