2016-11-01 9 views
1

iphoneとipadのxcode7(2.3)(Swift)でいくつかのアプリを作ったが、すべてうまくいくが、Reachabilityに大きな問題がある。携帯データを介してインターネットに接続していますが、無線LANで接続しても正常に動作します。インターネットにも接続されていないiphoneアプリ

ウェブビューはまだロードされていますが、「インターネット接続が見つかりません」というエラーが表示されます。エラーが..

..まいら私を助けてください

これは私のコードです:

(アニメーション:ブール値)をviewDidAppear FUNC

オーバーライド{

if Reachability.isConnectedToNetwork() == true { 

     print("Internet connection OK") 

    } else { 

     print("Internet connection FAILED") 

     let ViewController = UIAlertController(title: "Error!", message: "No Internet Connection Found", preferredStyle: .Alert) 



     let alertAction = UIAlertAction(title: "Dismiss", style: .Destructive) { (action) in 

      print("Dismiss button tapped!") 

     } 



     ViewController.addAction(alertAction) 

     presentViewController(ViewController, animated: true, completion: nil) 

    } 

} 

と、これは私の到達可能ファイルである

輸入財団 輸入SystemConfiguration

パブリッククラス到達可能性を{

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(kCFAllocatorDefault, UnsafePointer($0)) 
    } 

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

    let isReachable = flags == .Reachable 
    let needsConnection = flags == .ConnectionRequired 

    return isReachable && !needsConnection 

} 

}

答えて

0

試用版

class func isConnectedToNetwork() -> Bool { 

    var zeroAddress = sockaddr_in() 
    zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size) 
    zeroAddress.sin_family = sa_family_t(AF_INET) 

    guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, { 
     $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { 
      SCNetworkReachabilityCreateWithAddress(nil, $0) 
     } 
    }) else { 
     return false 
    } 

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

    let isReachable = flags.contains(.reachable) 
    let needsConnection = flags.contains(.connectionRequired) 

    return (isReachable && !needsConnection) 
} 
関連する問題