2016-04-17 17 views
0

私は、ユーザーがwifiに接続しているかどうかを知ることができ、接続や切断を行ったときにalamo fireを使用して非同期要求を送信することに依存するiosアプリケーションを作成しています。失敗した場合は非同期要求を繰り返しますか?

初めて接続すると、私の非同期は成功します。

ただし、最初に接続した後、Wi-Fiの切り替えによって404が発生します。

私は、ユーザが接続/切断するとすぐにリクエストを送信していることが考えられます。つまり、インターネットサービスが一切ないことを意味します。

私の質問は、失敗した場合、または作成したいリクエストを「キャッシュ」して、ユーザーがインターネット接続を確立するまで待つことができますか?

答えて

0

これを解決するソリューションはたくさんあります。

  • は彼がのがしたい場合は、彼を求めても、ユーザaltertビューを示す:あなたがすることによってこれを拡張することができ

    func downloadSomething() { 
        Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]) 
          .response { request, response, data, error in 
           if let error = error { 
            log(error) 
            self.downloadSomething() // recursive call to downloadSomething 
           } else { 
            // do something on success 
           } 
           } 
    } 
    

    :一つは、エラーの自動再試行メカニズムを実装し、再帰的に再びので、ダウンロード方法を呼び出すことですダウンロードを再試行する前に、 のダウンロードを再試行してください。 ( ネットワークのエラーに関するUI戦略に応じて)

  • 自動再試行の指定回数と、次にと尋ねます。
  • 異なるネットワークエラー処理戦略...
  • 等...私が思う
0

を一切必要とするために再発明したリンゴのコード等が存在しないか、エラーステータスコードをチェックし、コードに応じて、 reachabilityまたはこれswiftreachabilityの移植です。

class func hasConnectivity() -> Bool { 
    let reachability: Reachability = Reachability.reachabilityForInternetConnection() 
    let networkStatus: Int = reachability.currentReachabilityStatus().rawValue 
    return networkStatus != 0 
} 

をのWi-Fi接続の場合:あなたは、ユーザーがネットや無線LANに接続されている場合、非常に簡単にチェックすることができ

(reachability.currentReachabilityStatus().value == ReachableViaWiFi.value) 
関連する問題