Rechabilityを2つの方法で監視しようとしています。ホストへの接続とインターネットへの接続。どちらの場合も、UIAlertViewを表示しようとしています。これは現時点では正常に機能します。
私が達成しようとしているのは、ユーザーがアラートビューボタンをクリックして到達可能性を再度確認する場合ですが、これを行う方法がわかりません。理想的には、alertviewを閉じて再度表示したくないが、表示されたままにして、到達可能性チェックを再度要求するだけです。これは可能ですか?
これは私の現在のappdelegateimpコードであり、いつでも接続を確認したいのでappdelegateで使用されます。
- (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];
}
//Called by Reachability whenever status changes.
- (void)reachabilityChanged:(NSNotification* )note {
NetworkStatus internetStatus = [self.internetReach currentReachabilityStatus];
switch (internetStatus) {
case NotReachable:
{
isReachable=NO;
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI.");
isReachable=YES;
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN.");
isReachable=YES;
break;
}
}
NetworkStatus hostStatus = [self.hostReach currentReachabilityStatus];
switch (hostStatus) {
case ReachableViaWWAN:
{
hostActive=YES;
break;
}
case ReachableViaWiFi:
{
hostActive=YES;
break;
}
case NotReachable:
{
hostActive=NO;
break;
}
}
if (hostActive == YES && isReachable == YES) {
connectionNotReachable.hidden = YES;
}
if (isReachable == NO) {
NSLog(@"Internet connection lost");\
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;
}
if (hostActive == NO) {
NSLog(@"Host not active, internet connection");
UIAlertView *hostNotReachable = [[UIAlertView alloc] initWithTitle:@"Host Not Reachable" message:@"No Host" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[hostNotReachable show];
return;
}
}