每個人都閱讀它! 我的iOS程序需要連接到互聯網,如果連接丟失,請立即向我報告。它可以是任何東西:飛行模式,改變從LTE到3G或Edge的模式,打開或關閉WiFi,從WiFi到蜂窩信號或相反。我已經有了一個代碼,它允許檢查Internet是否可用。在那裏,它是(從How to use SCNetworkReachability in Swift):iPhone - 捕捉系統事件,如果Internet可用或不可用
import SystemConfiguration
func connectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(&zeroAddress, {
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($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)
}
但此代碼的工作只是如果我叫connectedToNetwork()函數。例如,當我將POST請求發送到服務器或按下按鈕時。我可以使用計時器每10秒執行一次該代碼,但我認爲必須有更好的方法。所以我想捕捉系統事件,如果有連接發生,然後執行此代碼或獲取有關Internet的信息已丟失或可用。感謝您的未來幫助!
您的代碼似乎是從http://stackoverflow.com/questions/25623272/how-to-use-scnetworkreachability-in-swift/25623647#25623647。如果您查看答案的結尾,則可以找到有關如何註冊在網絡更改中調用的回調函數的更多信息的鏈接。 –
是的,馬丁,那是代碼。但是,你能改善你的答案以解釋如何通過NSNotification或觀察者來使用它嗎? – Alex
我需要強制它通過NSNotification中心工作。據我所知,我正在添加觀察員,然後捕捉它的回覆。 – Alex