2017-05-31 15 views
5

特定のウェブサイトの到達可能性をチェックする方法は?Swift、特定のウェブサイトに到達可能かどうかを確認

インターネットアクセスのためにWi-Fiネットワークに接続されており、一部のサイトをブロックしています。それらのサイトにアクセスできるかどうかを確認する方法は?

Reachabilityクラスでチェックしましたが、特定のウェブサイトを確認できません。

現在、私はあなたが使用したい初期化子は、そのページに記載されているReachability.swift

+0

この答えをチェックアウトhttps://stackoverflow.com/a/9617166/3066450 – ebby94

+2

「到達可能」のあなたの定義は何ですか?ブロックされたサイトであっても、ページがブロックされていることを伝える何らかの種類のページを返す傾向があります。だから基本的なチェックは、ページが "到達可能"であるように見せます。 – rmaddy

+0

@rmaddy:そのタイムアウトが表示されています。 – Meghan

答えて

-2

を使用しています。

あなたは、パラメータとしてホスト名を渡す:

init?(hostname: String) 
// example 
Reachability(hostname: "www.mydomain.com") 
+0

ブロックされたサイトにも到達可能であることを示す。 – Meghan

0

私はベストプラクティスであるかわからないが、私はそうするためにHTTP requestを使用しています。

func checkWebsite(completion: @escaping (Bool) -> Void) { 
    guard let url = URL(string: "yourURL.com") else { return } 

    var request = URLRequest(url: url) 
    request.timeoutInterval = 1.0 

    let task = URLSession.shared.dataTask(with: request) { data, response, error in 
     if let error = error { 
      print("\(error.localizedDescription)") 
      completion(false) 
     } 
     if let httpResponse = response as? HTTPURLResponse { 
      print("statusCode: \(httpResponse.statusCode)") 
      // do your logic here 
      // if statusCode == 200 ... 
      completion(true) 

     } 
    } 
    task.resume() 
} 
+0

これは、空き状況を確認する代わりに、ページ全体をダウンロードします。 – Moritz

+1

ページがブロックされているかどうかをチェックする方法は? 1秒のタイムアウトは、ページのダウンロードに1秒以上かかる場合、またはユーザーのアクセスが少し遅い場合、ほとんどのページに到達できないように見えます。 – rmaddy

関連する問題