2017-08-30 46 views
2

我正在iOS應用程序上工作,我需要檢測網絡是否從Wifi連接更改爲另一個Wifi連接或WiFi和3G之間。如何檢測iOS中的WiFi網絡變化

我試過使用Reachability庫,但它似乎沒有檢測到Wifi連接之間的變化。 我能用什麼?

應用程序的目標應該是App Store,所以我不能使用Apple的私有方法。

更新:經過一些測試後,我發現,使用模擬器測試時,它的工作完美。我收到通知沒有任何問題。可能是iPhone的問題嗎?

在此先感謝

+1

https://stackoverflow.com/questions/17652465/capture-wi-fi-network-changing-event -in-ios – KethanKumar

+1

[iOS中捕獲Wi-Fi網絡更改事件]的可能重複(https://stackoverflow.com/questions/17652465/capture-wi-fi-network-changing-event-in-ios) – gvuksic

+1

我已經看到了,但除了設置定時器和檢查SSID之外沒有其他辦法。然後更改不會自動檢測 – RuLoViC

回答

0

請參考以下鏈接https://stackoverflow.com/a/19256197/1382157

其他方式,

- (BOOL)isReachable { 
return [self isReachableViaWWAN] || [self isReachableViaWiFi]; 
} 

- (BOOL)isReachableViaWWAN {// If this return true, means it is connected to 3g 
return self.networkReachabilityStatus == 
AFNetworkReachabilityStatusReachableViaWWAN; 
} 

- (BOOL)isReachableViaWiFi { // If this return true, means it is connected to wifi 
return self.networkReachabilityStatus == 
AFNetworkReachabilityStatusReachableViaWiFi; 
} 

確保你正確初始化類,並做

[self.manager.reachabilityManager startMonitoring]; 
+0

是的,我試過,確保我打電話給startMonitoring,但到目前爲止沒有運氣 – RuLoViC

+0

然後發佈您的代碼,以便每個人都可以看到並清楚發生了什麼問題。 – Sakshi

0

請參閱第一Reachibility

在.H

Reachability* reachability; 

.M類導入類 寫後

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; 
    reachability = [Reachability reachabilityForInternetConnection]; 
[reachability startNotifier]; 
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; 
if(remoteHostStatus == NotReachable) 
{ 
NSLog(@"no"); 
} 
else if (remoteHostStatus == ReachableViaWiFiNetwork) 
{ 
NSLog(@"wifi"); 
} 
else if (remoteHostStatus == ReachableViaCarrierDataNetwork) 
{ 
NSLog(@"cell"); 
} 
..... 

- (void) handleNetworkChange:(NSNotification *)notice 
{ 
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; 
if(remoteHostStatus == NotReachable) 
{ 
    NSLog(@"no"); 
} 
else if (remoteHostStatus == ReachableViaWiFiNetwork) 
{ 
    NSLog(@"wifi"); 
} 
else if (remoteHostStatus == ReachableViaCarrierDataNetwork) 
{ 
    NSLog(@"cell"); 
} 
} 
+0

是的,我試過了,檢查這個例子,我有類似的實現,但它仍然不工作 – RuLoViC

+0

這對我工作我不知道你面臨什麼問題。 –

+0

在不同的wifi網絡之間切換時,我不會收到通知 – RuLoViC