2017-09-13 11 views
0

NetworkReachabilityManagerと問題があります。Alamofireです。このサンプルコードで接続をテストしようとしました:Alamofire - NetworkReachabilityManagerが.notReachableで動作しない

override func viewDidLoad() { 
    super.viewDidLoad() 

    let manager = NetworkReachabilityManager(host: "www.apple.com") 

    manager?.listener = { status in 

    switch status { 

     case .notReachable: 
      print("network connection status - lost") 
     case .reachable(NetworkReachabilityManager.ConnectionType.ethernetOrWiFi): 
      print("network connection status - ethernet/WiFI") 
     case .reachable(NetworkReachabilityManager.ConnectionType.wwan): 
      print("network connection status - wwan") 
     default: 
      break 
    } 
    } 
    manager?.startListening() 
} 

私は無線LANをオフにしようとしましたが、空白の応答しか受信しませんでした。 「ネットワーク接続状態 - 紛失」などの応答はありません。

しかし、私は無線LANをオンにしようとしたとき、私は結果 "ネットワーク接続状態 - イーサネット/ WiFI"が良い応答です。 .notReachableで何が問題なのでしょうか?任意の提案が高く評価されました。

+0

のようなマネージャーを作成するには、マネージャを聞かせて '宣言されている場合、あなたが投稿することができます= NetworkReachabilityManager(ホスト: "www.apple.com") 'メソッド内? –

+0

@ReinierMelian私の投稿を更新しました。だから、方法はどこにあるのか分かります。 (これらのコードをviewDidLoadメソッドだけでなくてもよい別のメソッドに移動することができます)。 – HotDudeSmith

+0

あなたのUIViewControllerの変数としてマネージャを宣言します。 viewDidLoadでその変数を初期化し、問題が解決するかどうかを私に教えてください。シングルトンクラスでNetworkReachabilityManagerを使用します。 –

答えて

0

Alamofireによると、私はあなたの問題はマネージャーのインスタンス定義に関連していると思う「マネージャを保持することを忘れないようにしてください」そう、この

class A: UIViewController{ 

let manager = NetworkReachabilityManager(host: "www.apple.com") 

override func viewDidLoad() { 
super.viewDidLoad() 

// before start listening you can check 
if (manager?.isReachableOnEthernetOrWiFi == true) 
    { 
    print("internet is available") 
    } 
    else 
    { 
    print("internet is not available") 
    } 

manager?.startListening() 

manager?.listener = { status in 

switch status { 

    case .notReachable: 
     print("network connection status - lost") 
    case .reachable(NetworkReachabilityManager.ConnectionType.ethernetOrWiFi): 
     print("network connection status - ethernet/WiFI") 
    case .reachable(NetworkReachabilityManager.ConnectionType.wwan): 
     print("network connection status - wwan") 
    default: 
     break 
      } 
    }  

} 

} 
+0

私はそれを試みましたが、全く動作しません。非常に興味深いことに、私は実行中のアプリケーションについて何か変わったことを発見しました。私はアプリを起動する前に、私は無線LANをオフにして、私はアプリを起動し、それは私に空白の応答を与える。しかし、アプリケーションを起動する前に無線LANを持っていれば、応答が得られますが、アプリケーションが起動している間にWi-Fiをオフにすると、「ネットワーク接続の状態 - 紛失」という応答が表示されます。あなたのプロジェクトから同じ問題がありますか? Alamofire NetworkReachabilityManagerのバグかどうかを確認したかっただけです。 – HotDudeSmith

+0

私の答えが更新されました。あなたはマネージャのisReachable'プロパティでインターネット接続をチェックできます。アプリの起動前にインターネットリスナーが利用できない理由は、なぜそれが空白の応答を与えるからです。 –

+0

https://github.com/Alamofire/Alamofire/issues/2275この問題が既にチェックされていることを確認してください。 –

関連する問題