【发布时间】:2011-09-02 00:30:25
【问题描述】:
如何快速检查 iPhone 是否连接到互联网,快速...
谢谢...
【问题讨论】:
标签: iphone objective-c ios reachability
如何快速检查 iPhone 是否连接到互联网,快速...
谢谢...
【问题讨论】:
标签: iphone objective-c ios reachability
看看 Apple 的 Reachability 类和this example app。
【讨论】:
您应该尝试使用您认为合适的超时时间连接到服务器。永远不要使用可达性 API,直到您确定您的连接尝试失败,甚至只有当您从 NSURLConnection 等收到错误时才使用。人。表示您未连接到网络。在这种情况下,请使用 Reachability API 来确定您应该何时重试。
仅仅尝试连接可能会打开以前不可用的网络接口。
【讨论】:
您可以使用以下代码快速检查互联网连接:
import SystemConfiguration
class Reachability: NSObject {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
}
var flags = SCNetworkReachabilityFlags()
if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
return false
}
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
return (isReachable && !needsConnection)
}
希望这会有所帮助!
【讨论】: