2016-10-11 64 views
2

如果wifi網絡連接發生變化(連接到新的ntwk或連接到新的ntwk),是否可以通知ios應用程序(可能未激活)?如何讓我的ios應用程序能夠響應wifi更改事件

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

在Android中,我能夠實現它使用BroadcastReceiver是否有任何這樣的設施在iOS?

謝謝, Praneeth。

+0

它爲你工作? –

+0

嗨Rajan, 我的應用程序有兩個部分, 第1部分 - 使其反應無線變化, 第2部分 - 編程一些其他的東西。 正如我想出的那樣,第2部分是不可能的,我放棄了我的應用程序的這個想法,並沒有真正嘗試過。 非常感謝您的幫助 –

回答

2

我們在iOS中有一個名爲Reachability的類,用於檢測任何網絡閃爍/斷開/連接。
可達類,可以發現here

使用

添加Reachability.swift類項目。

這是斯威夫特2.x版代碼,而不是3.0

對於斯威夫特3.X版本檢查我的答案斯威夫特3.Xhere

樣品 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。所以,你可以在這裏處理任何事情。

+0

您是否有任何客觀的C代碼 –

+0

這是不適用於背景模式的應用程序。 –

1

添加到上面的回答,您可以使用雨燕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") 
     } 
    } 
} 

希望它可以幫助..

乾杯以下爲

相關問題