我正在创建一个实现MultipeerConnectivity框架的应用程序,因此我想在允许他继续之前检查用户的互联网连接类型。换句话说,我的问题是:
iOS中是否有办法检查通过移动电话或WiFi连接到互联网的用户?我确信有,但我找不到它。
注意:我不是问如何检查用户是否连接到互联网(我知道该怎么做)。提前谢谢。
答案 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
}
答案 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对你有帮助: -