在启动和恢复时检测网络以避免 ReachabilitySwift 崩溃

Detect the network at launch & resuming to avoid crash with ReachabilitySwift

我正在 Swift1.2 中开发一个 iOS 应用程序,当没有网络时我的应用程序崩溃了。

所以我想检测我是否有网络。但我希望能够随时知道,我的意思是应用程序何时启动或何时从后台恢复等。对于我所看到的,我应该在 AppDelegate.swift

中编写我的代码

为了执行此操作,我正在使用 ReachabilitySwift,但我没有成功使用它。

除了避免应用程序崩溃外,目标还在于打印一个横幅,向用户显示他没有网络的信息,就像 Facebook iOS 应用程序那样。但我已经接近它了。

感谢您在 Swift 世界

中的帮助和指导

不保证能在准确时刻为您带来结果的可达性,因为它是完全异步的。您的应用不应该等待可达性结果来执行连接,因为它不应该崩溃而出现问题。

您需要做的是在您的 AppDelegate 上添加一个 NSNotification,以便在您的 Reachability 发生变化时收到通知。

来自documentation

您可以将此添加到 didFinishLaunchingWithOptions

let reachability = Reachability.reachabilityForInternetConnection()

    NSNotificationCenter.defaultCenter().addObserver(self, 
                                                     selector: "reachabilityChanged:", 
                                                     name: ReachabilityChangedNotification, 
                                                     object: reachability)

    reachability.startNotifier()

这是为了显示横幅,或任何您想做的事情:

func reachabilityChanged(note: NSNotification) {

        let reachability = note.object as! Reachability

        if reachability.isReachable() {
            if reachability.isReachableViaWiFi() {
                println("Reachable via WiFi")
            } else {
                println("Reachable via Cellular")
            }
        } else {
            println("Not reachable")
        }
    }