我有iOS移动应用程序,在从服务器获取数据之前有互联网可用性检查 .

我用这个代码

func isInternetAvailable() -> Bool
{
    var zeroAddress = sockaddr_in()
    zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)

    let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
        $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
            SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
        }
    }

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

除了一部手机 - iPhone SE外,一切都很好 . 当这款iPhone通过Wi-Fi连接到互联网时 - 没有任何问题,但如果这款手机通过3G或LTE连接 - 此功能返回false并且应用程序未加载数据 .

我将iOS更新到上一版本,多次重新安装我的应用程序 . 但我对这个问题没有好运 . 我在日志中唯一拥有的是

可选(错误域= NSURLErrorDomain代码= -1009 "The Internet connection appears to be offline." UserInfo = {NSUnderlyingError = 0x17424b910 {错误域= kCFErrorDomainCFNetwork代码= -1009 "(null)" UserInfo = {_ kCFStreamErrorCodeKey = 50,kCFStreamErrorDomainKey = 1}},NSErrorFailingURLStringKey = http://some_url.com/api/,NSErrorFailingURLKey = http://some_url.com/api/ kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 50,NSLocalizedDescription = Internet连接似乎处于脱机状态 . })

附:据我所知,这是唯一一个有此问题的手机 . 应用程序更新或iOS版本更新不会改变去年的任何内容,最后一件事让我发疯 - 所有其他应用程序正在正常使用这款手机!