【问题标题】:Check if iPhone is connected to the internet [duplicate]检查iPhone是否已连接到互联网[重复]
【发布时间】:2011-09-02 00:30:25
【问题描述】:

如何快速检查 iPhone 是否连接到互联网,快速...

谢谢...

【问题讨论】:

    标签: iphone objective-c ios reachability


    【解决方案1】:

    看看 Apple 的 Reachability 类和this example app。

    【讨论】:

    • 这样更简单:
    【解决方案2】:

    您应该尝试使用您认为合适的超时时间连接到服务器。永远不要使用可达性 API,直到您确定您的连接尝试失败,甚至只有当您从 NSURLConnection 等收到错误时才使用。人。表示您未连接到网络。在这种情况下,请使用 Reachability API 来确定您应该何时重试。

    仅仅尝试连接可能会打开以前不可用的网络接口。

    【讨论】:

    • 这个答案需要强调一下。可达性有很多限制,并不完全可靠。它可以在没有连接时返回true,在某些网络连接波动的情况下。唯一真正可靠的方法是在尝试进行实际通信后实际处理故障。事先检查并假设它在此期间无法更改是导致未处理故障的秘诀。
    【解决方案3】:

    您可以使用以下代码快速检查互联网连接:

    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)
    }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 2015-05-25
      相关资源
      最近更新 更多