在发布时检测网络&恢复以避免与ReachabilitySwift崩溃

时间:2015-09-29 13:52:28

标签: ios swift reachability

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

所以我想检测一下我是否有网络。但我希望能够知道,在任何时候,我的意思是应用程序启动时或从后台恢复时等等。我看到我应该在AppDelegate.swift中编写我的代码

要执行我正在使用ReachabilitySwift但我没有成功使用它。

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

感谢您在Swift World中的帮助和指导

1 个答案:

答案 0 :(得分:2)

无法保证可达性能在特定时刻为您带来结果,因为它完全异步。你的应用程序不应该等待Reachability结果执行连接,因为它不应该崩溃是有问题的。

您需要做什么才能在NSNotification上添加AppDelegate,以便在您的可达性发生变化时收到通知。

来自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")
        }
    }