检查互联网连接类型(iOS)

时间:2016-01-10 11:11:33

标签: ios swift

我正在创建一个实现MultipeerConnectivity框架的应用程序,因此我想在允许他继续之前检查用户的互联网连接类型。换句话说,我的问题是:

iOS中是否有办法检查通过移动电话或WiFi连接到互联网的用户?我确信有,但我找不到它。

注意:我不是问如何检查用户是否连接到互联网(我知道该怎么做)。提前谢谢。

2 个答案:

答案 0 :(得分:3)

这个不是很快,但我相信你会找到一个快速的变种。

请参阅您在Apple上可以找到的Reachability课程,并可以根据需要进行调整。您已经使用它来检测您是否已连接的可能性很高。

在此课程中,您可以询问连接状态:

Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];

NetworkStatus status = [reachability currentReachabilityStatus];

if(status == NotReachable) 
{
    //No internet
}
else if (status == ReachableViaWiFi)
{
    //WiFi
}
else if (status == ReachableViaWWAN) 
{
    //3G
}

请参阅iOS Detect 3G or WiFi

答案 1 :(得分:0)

class func hasConnectivity() -> Bool
 {

 let reachability: Reachability = 

Reachability.reachabilityForInternetConnection()

  let networkStatus: Int = reachability.currentReachabilityStatus().rawValue

  return networkStatus != 0
}


=====================================

import Foundation
import SystemConfiguration

public class Reachability {

    class func isConnectedToNetwork() -> Bool {

        var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
        zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
        zeroAddress.sin_family = sa_family_t(AF_INET)

        let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
            SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue()
        }

        var flags: SCNetworkReachabilityFlags = 0
        if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 {
            return false
        }

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

        return isReachable && !needsConnection
    }

}

=>这是Post it对你有帮助: -

https://github.com/ashleymills/Reachability.swift