[英]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.