我試圖設置可達性來顯示警報視圖,當互聯網連接丟失時。使用iOS可達性顯示UIAlertView
我很努力地理解實際可用性的可達性。我已閱讀documentation並設置示例應用程序以供蘋果公司審查,但我想更好地理解代碼及其工作原理。
在我的設置我找了兩件事情:1。 告訴我,當連接到互聯網丟失 2.告訴我,當連接主機地址丟失
的代碼是我的應用程序中設置代理我希望UIAlertView在連接丟失時出現在應用程序中的任何位置。
對於方案1,我期待顯示一個UIAlertView來通知用戶說連接丟失。點擊時會出現「再試一次」按鈕,然後再次測試連接,看看互聯網連接是否已經返回,如果不再顯示警報視圖。
代碼: 應用代表小鬼文件:
//Called by Reachability whenever status changes.
- (void)reachabilityChanged:(NSNotification*)note {
Reachability *curReach = (Reachability *)[note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
NSLog(@"Reachability changed: %@", curReach);
networkStatus = [curReach currentReachabilityStatus];
if (networkStatus == NotReachable) {
NSLog(@"NOT REACHABLE");\
UIAlertView *connectionNotReachable = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"connectionNotReachableTitle", @"Title for alert view - connection Not Reachable") message:NSLocalizedString(@"connectionNotReachableMessage", @"Message for alert view - connection Not Reachable") delegate:self cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"connectionNotReachableTryAgain", @"Try again button for alert view - connection Not Reachable"), nil];
[connectionNotReachable show];
return;
} else {
NSLog(@"REACHABLE");
}
}
- (void)monitorReachability {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:ReachabilityChangedNotification object:nil];
self.hostReach = [Reachability reachabilityWithHostName: @"api.parse.com"];
[self.hostReach startNotifier];
self.internetReach = [Reachability reachabilityForInternetConnection];
[self.internetReach startNotifier];
}
困惑:我不明白的是該程序是如何實際工作。因此,在我的application didFinishLaunchingWithOptions:
中,我致電[self monitorReachability]
。
我想這是爲hostReach和internetReach設置通知程序。但是,然後在reachabilityChanged
方法內如何確定如果這是hostReach == NotReachable或internetReach ==不可達的區別。
理想情況下,HostReach無法訪問,我現在不想做太多工作,因爲這可能導致當時無法訪問此特定api。所以我不想在這段時間內完全讓應用程序無法訪問。
謝謝,我確實提到了我在Apple問題中設置了示例應用程序。我的難處在於瞭解互聯網可達性與主機可達性之間的差異。以上所有內容實際上都在我的問題中,與您使用不同的互聯網連接狀態的情況略有不同...... – StuartM 2013-03-12 22:45:51
是互聯網可訪問意味着Apple默認將主機設置爲可訪問LAN/Internet網關,但您可以通過將自定義主機設置爲自定義主機來設置自己的自定義主機。 – nsgulliver 2013-03-12 22:54:08
我已經更新了我的答案,你可以看看它。 – nsgulliver 2013-03-12 23:01:14