[Swift2] 디바이스가 온라인 상태인지 오프라인 상태인지 판단

9355 단어 XcodeSwiftiOS
내 포트폴리오 사이트에서 중요한 코드 예시를 추출합니다.
Xcode의 사용법을 모르는 사람은 열람을 추천합니다여기.

환경 정보


이번 예시 코드는 다음과 같은 환경을 구상했다.
  • Swift version 2.0 (swiftlang-700.0.52.2 clang-700.0.65)
  • Xcode Version 7.0 beta 5 (7A176x)
  • ※ 2015년 8월 25일(JST) 기록
    다음 환경에서의 동작도 확인했다.
  • Swift version 2.0 (swiftlang-700.0.57.3 clang-700.0.72)
  • Xcode Version 7.0 beta 6 (7A192o)
  • Swift2.0으로 변환한다고 가정합니다.1.x에서는 기호가 다르므로 사용할 수 없습니다.

    SystemConfiguration.프레임 추가



    시스템 구성.프레임을 추가합니다.

    네트워크 상태를 확인하는 함수 만들기


    이번 가설은 다양한 장소에서 네트워크 상태를 검사하고 함수를 만든다.
    코드 여기 있습니다.
    CheckReachability.swift
    import SystemConfiguration
    
    func CheckReachability(host_name:String)->Bool{
    
        let reachability = SCNetworkReachabilityCreateWithName(nil, host_name)!
        var flags = SCNetworkReachabilityFlags.ConnectionAutomatic
        if !SCNetworkReachabilityGetFlags(reachability, &flags) {
            return false
        }
        let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
        let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
        return (isReachable && !needsConnection)
    }
    
    SystemConfiguration.프레임을 가져온 다음 함수를 만듭니다.

    함수 사용


    방금 만든 함수를 사용하면 이렇게 하십시오.
    예를 들어 디버그 영역에 표시할 때
    print(CheckReachability("google.com"))
    
    이런 느낌.
    Swift 1.x에서는 println이고 2.0에서는 print입니다.
    상기 코드는 구글입니다.com 호스트 연결이 성공했을 때 진짜로 돌아가고, 연결이 실패했을 때 가짜로 돌아갑니다.

    마지막


    응용편.
    AppDelegate.swift는 다음과 같습니다.
    AppDelegate.swift
    import UIKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
        var window: UIWindow?
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            return true
        }
        func applicationWillResignActive(application: UIApplication) {
        }
        func applicationDidEnterBackground(application: UIApplication) {
        }
        func applicationWillEnterForeground(application: UIApplication) {
        }
    
        func applicationDidBecomeActive(application: UIApplication) {
    // ここから
            if CheckReachability("google.com") {
                print("インターネットへの接続が確認されました")
            } else {
                print("インターネットに接続してください")
    
                let alertController = UIAlertController(title: "インターネット未接続", message: "本アプリはインターネットに\n接続されていない状態で\n使用することは出来ません。", preferredStyle: .Alert)
    
                let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
                alertController.addAction(defaultAction)
    
                self.window?.rootViewController?.presentViewController(alertController, animated: true, completion: nil)
    
            }
    // ここまで
        }
    
        func applicationWillTerminate(application: UIApplication) {
        }
    }
    
    이렇게 기술하면
    응용 프로그램을 시작할 때마다 인터넷에 연결할지 여부를 판단합니다
    인터넷에 연결되면 평소대로 시작합니다.
    연결되지 않은 경우
    이 응용 프로그램은 인터넷에서
    연결되지 않음
    사용할 수 없습니다.
    문서 레지스트리에 항목을 추가합니다.
    네트워크에 연결해야 하는 프로그램을 만들면 설치해야 합니다.

    좋은 웹페이지 즐겨찾기