今天,我公開了我的Beta版應用。我在一家旅館,並且還沒有獲得WiFi的訪問代碼。在測試可達性時,我注意到它沒有失敗,因爲它應該有。這是連接到WiFi的,但沒有任何實際可達,因爲我沒有登錄。此用例應該可覆蓋reachabilityWithHostname。這裏是我的代碼:iOS可達性無法捕捉連接到WiFi但未登錄的情況
在AppDelegate.h:
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
Reachability* hostReach;
Reachability* internetReach;
Reachability* wifiReach;
}
在AppDelegate.m:
internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
wifiReach = [Reachability reachabilityForLocalWiFi];
[wifiReach startNotifier];
hostReach = [Reachability reachabilityWithHostname: @"http://www.google.com"];
[hostReach connectionRequired];
[hostReach startNotifier];
在需要連接模塊(S):
- (BOOL) isInternetReachable
{
Reachability *currentReach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [currentReach currentReachabilityStatus];
return (netStatus == ReachableViaWiFi || netStatus == ReachableViaWWAN);
}
有誰知道如何掩蓋這種情況?
只是一個評論:我嘗試使用比google.com更不出名的站點進行可達性測試,以防某些本地設備正在緩存流量。 – 2013-03-09 03:06:33
問題是,這種情況實際上很難涵蓋。您的酒店在正確登錄之前確實將主機(如google.com)解析爲登錄網站IP(我認爲這是一個系統性錯誤)。 – Till 2013-03-09 03:06:36
當我們的應用程序被髮送到重定向頁面時,我遇到了同樣的問題。 – Unome 2015-01-20 21:58:01