2016-12-19 9 views
0

ネットワーク変更を検出したい。たとえば、WiFiから4Gに切り替える場合や、しかし、私のコードはこれらの変更を検出しません。私は、アプリが起動したときにわずかな出力しか得られません。通知センターがネットワーク変更で起動しない

私はこのコードしている:私は間違って何かを

import ReachabilitySwift 

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let reachability = Reachability()! 


     NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged),name: ReachabilityChangedNotification,object: reachability) 
     do{ 
      try reachability.startNotifier() 
     }catch{ 
      print("could not start reachability notifier") 
     } 

    } 

func reachabilityChanged(note: NSNotification) { 

     let reachability = note.object as! Reachability 

     if reachability.isReachable { 
      if reachability.isReachableViaWiFi { 
       print("Reachable via WiFi") 
      } else { 
       print("Reachable via Cellular") 
      } 
     } else { 
      print("Network not reachable") 
     } 
    } 

実施していましたか?

答えて

2

アクションメソッドは、セレクタが

#selector(reachabilityChanged(_:)) // self is not needed 

でなければならないので、パラメータを受け取り、方法自体は

func reachabilityChanged(_ notification: Notification) { 
+0

func reachabilityChanged(note: NSNotification) { 

私はあなたにコードを変更しました。しかし、それは動作していません。 – da1lbi3

+0

ブロックベースのAPIをお試しください。 – vadian

+0

どういう意味ですか?私はこのページの例の通知を使用しました:https://github.com/ashleymills/Reachability.swift – da1lbi3

0

セレクタは、この

NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged),name: ReachabilityChangedNotification,object: reachability) 
間違っ

変更であることになっています

NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:),name: ReachabilityChangedNotification,object: reachability) 

これがうまくいけばいいと思う。

とも

func reachabilityChanged(note: NSNotification) { 
+0

残念ながら動作しません。この関数は、ネットワークを変更するときに呼び出されることはありません。 – da1lbi3

+0

編集してください。 –

関連する問題