簡體   English   中英

如何使我的ios應用程序響應wifi更改事件

[英]How to make my ios app reactive to wifi change events

如果連接到的wifi網絡發生變化(與新的ntwk斷開連接或連接到新的ntwk),是否可以通知ios應用程序(可能未激活)?

我要建立一個應用程序(即使在非活動狀態)應該在連接到特定的WiFi網絡時得到通知並做一些事情。

在android我能夠使用BroadcastReceiver實現它在ios中有任何這樣的設施嗎?

謝謝,Praneeth。

我們在iOS中有一個名為Reachability的類,用於檢測任何網絡閃爍/斷開/連接。
可以在這里找到可達性等級

用法

在項目中添加Reachability.swift類。

這是一個Swift 2.x版本代碼,而不是3.0

對於Swift 3.x版本,請在此處查看我的答案

Swift 3.x的示例https://www.dropbox.com/sh/bph33b12tyc7fpd/AAD2pGbgW3UnqgQoe7MGPpKPa?dl=0

在你的AppDelegate創建一個Reachability類的對象

private var reachability:Reachability!

didFinishLaunchingWithOptions為您的網絡可訪問性添加一個觀察者

//Network Reachability Notification check 

//add an observer to detect whenever network changes.
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(checkForReachability), name: ReachabilityChangedNotification, object: nil)

do {self.reachability = try Reachability.reachabilityForInternetConnection()
} catch {
}

do {
try self.reachability.startNotifier()
} catch{
}

並使您的選擇器功能checkForReachability檢測AppDelegate網絡更改/網絡斷開連接

func checkForReachability(notification:NSNotification) {
    let reachability = notification.object as! Reachability
    if reachability.isReachable() {
        if reachability.isReachableViaWiFi() {
            print("Reachable via WiFi")
        } else {
            print("Reachable via Cellular")
        }
    } else {
        print("Network not reachable")
    }
}

每當網絡發生變化/網絡中斷或網絡閃爍時, Reachability類將觸發ReachabilityChangedNotification ,最終將調用此用戶定義的方法checkForReachability 所以,你可以在這里處理任何事情。

添加到上面的答案,您可以使用以下Swift 3

let reachability = Reachability()!

reachability.whenReachable = { reachability in
    // this is called on a background thread, but UI updates must
    // be on the main thread, like this:
    dispatch_async(dispatch_get_main_queue()) {
        if reachability.isReachableViaWiFi() {
            print("Reachable via WiFi")
        } else {
            print("Reachable via Cellular")
        }
    }
}

希望能幫助到你..

干杯!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM