检查互联网连接 - iOS逻辑

Bri*_*rsh 0 ios swift swift2

我是iOS编程的新手,没有面向对象的编程背景.

我有一个应用程序,它本质上是几个Web API的用户界面.

我有一个Reachability类,可以让我检查是否有有效的互联网连接.当用户在登录页面上并且没有其他操作时,这很有效.

但是,假设我有一个带有5个按钮的视图,所有这些都需要互联网连接才能工作.在实际进行API调用之前,我是否只需要每个按钮调用此Reachability.isConnected() - > Bool方法?

我担心这不是正确的逻辑.我是否应该有后台程序来定期检查连接?

由于缺乏OOP经验,我将这个功能分解为离散类,因此我遇到了问题.

有关处理此连接检查的最佳方法的任何建议都会很棒.

Tho*_*mas 5

要检查连接网络,您必须创建一个类,例如将其放在"服务"文件夹中,然后复制以下代码:

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(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

    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在任何您想要的地方使用它:

if Reachability.isConnectedToNetwork() {

     // Do stuff if you're connected to the internet

}
else {

    // Do stuff if you're not connected to the internet
}
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助你;)