在Swift中检测WiFi是否已启用

3

在我的应用程序中,我有一些NSURLConnection.sendAsynchronousRequest,但是如果用户禁用了wifi,应用程序会崩溃。

有没有办法检测wifi是否被禁用,这样我就可以做出类似以下的操作:

if(wifi is enabled)
{
    NSURLConnection.sendAsynchronousRequest
}
2个回答

4

现在让我们来谈谈Swift 2.0:

func isConnectionAvailble()->Bool{

    let rechability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, "www.apple.com")

    var flags : SCNetworkReachabilityFlags = SCNetworkReachabilityFlags()

    if SCNetworkReachabilityGetFlags(rechability!, &flags) == false {
        return false
    }

    let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
    let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0

    return (isReachable && !needsConnection)
}

4

在这篇博客文章中找到了答案:

步骤1:

将“SystemConfiguration”框架添加到您的项目中

步骤2:

将此函数添加到您的项目中:

func isConnectionAvailble()->Bool{

    var rechability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, "www.apple.com").takeRetainedValue()

    var flags : SCNetworkReachabilityFlags = 0

    if SCNetworkReachabilityGetFlags(rechability, &flags) == 0
    {
        return false
    }

    let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0
    let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
    return (isReachable && !needsConnection)
}

1
我已经添加了SystemConfiguration框架,但它显示Reachability和NetworkStatus类型未声明。 - Clément Bisaillon
1
是的,我也看到了那个问题。我进行了一些研究并重新修改了我的答案。希望这可以帮到你! - Michael Dautermann
大家好,我添加了框架,然后将函数粘贴到我的视图中,但是一切都出现了问题。所有的问题都是相同的:“使用未声明的类型'SC....'谢谢你的帮助:)) - ernestocattaneo
你不会将它导入到你的 Swift 文件中的,你想要导入到桥接头文件中吗,如 #import <SystemConfiguration/SystemConfiguration.h> - Chris
这是用于检测WiFi吗?还是只要有任何类型的数据连接可用(LTE,3G),它就会返回true。 - jamesfzhang
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接