我正在使用Swift1.2中的iOS应用程序,当没有网络时我的应用程序崩溃了。
所以我想检测一下我是否有网络。但我希望能够知道,在任何时候,我的意思是应用程序启动时或从后台恢复时等等。我看到我应该在AppDelegate.swift中编写我的代码
要执行我正在使用ReachabilitySwift但我没有成功使用它。
除了避免应用程序崩溃之外,目标还在于打印一个横幅,向用户显示他没有网络的信息,如Facebook iOS App。但我很接近它。
感谢您在Swift World中的帮助和指导
答案 0 :(得分:2)
无法保证可达性能在特定时刻为您带来结果,因为它完全异步。你的应用程序不应该等待Reachability结果执行连接,因为它不应该崩溃是有问题的。
您需要做什么才能在NSNotification
上添加AppDelegate
,以便在您的可达性发生变化时收到通知。
您可以在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")
}
}