2017-08-07 42 views
0

swift3的Xcode 8.3.3swift3的Xcode 8.3.3运行

应用过程中检查可达性我做了一个按钮,检查可达性,但如何运行每秒的应用程序时做检查可达性。

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 


    @IBAction func checkAction(_ sender: Any) { 
     checkReachability() 
    } 

    func checkReachability(){ 
     if currentReachabilityStatus == .reachableViaWiFi { 
      print("User is connected to the internet via wifi.") 
     }else if currentReachabilityStatus == .reachableViaWWAN{ 
      print("User is connected to the internet via WWAN.") 
     } else { 
      print("There is no internet connection") 
     } 
    } 


} 

回答

1

您不需要每秒观察可达性,因为有一个委托方法会在互联网可达性发生变化时被调用。

func reachabilityChanged(notification: Notification) { 
    let reachability = notification.object as! Reachability 
    switch reachability.currentReachabilityStatus { 
    case .notReachable: 
    debugPrint(“Network became unreachable”) 
    case .reachableViaWiFi: 
    debugPrint(“Network reachable through WiFi”) 
    case .reachableViaWWAN: 
    debugPrint(“Network reachable through Cellular Data”) 
} 
} 

但你需要最后加入

ReachabilityManager.shared.startMonitoring() 

这样ReachabilityManager将开始监视修改,开始通过添加方法调用startMonitoring()监控成viewDidLoad()方法

/// Starts monitoring the network availability status 
func startMonitoring() { 
    NotificationCenter.default.addObserver(self, 
      selector: #selector(self.reachabilityChanged), 
       name: ReachabilityChangedNotification, 
       object: reachability) 
    do{ 
    try reachability.startNotifier() 
    } catch { 
    debugPrint(“Could not start reachability notifier”) 
    } 
} 

和。

+0

如果你需要监控整个应用程序的可达性,你可以把这段代码放在AppDelegate中 –

+0

我是否正确? 在AppDelegate.swift中 func reachabilityChanged(通知:通知){ let reachability = notification.object as!可达性 开关reachability.currentReachabilityStatus { 情况.notReachable: debugPrint( “网络变得不可达”) 情况.reachableViaWiFi: debugPrint( “网络可到达的通过WiFi”) 情况.reachableViaWWAN: debugPrint(“网络可到达的通过蜂窝数据“) } } –

+0

在ViewController.swift,倍率FUNC viewDidLoad中(){FUNC startMonitoring(){ NotificationCenter.default.addObserver(个体, 选择器:#selector(self.reachabilityChanged) 名:ReachabilityChangedNotification, 对象:到达能力) 做{ 尝试reachability.startNotifier() } {赶上 debugPrint( “无法启动可达通知”) }} ReachabilityManager.shared.startMonitoring() } –