インターネットへの接続が失われたときにアラート ビューを表示するように到達可能性をセットアップしようとしています。
到達可能性が実際にどのように機能するかを理解するのに苦労しています。ドキュメントを読み、Apple からレビューするためにサンプル アプリをセットアップしましたが、コードとそれがどのように機能するかをよりよく理解したいと思います。
セットアップ内で、次の 2 つのことを探しています。1. インターネットへの接続が失われたときに通知する 2. ホスト アドレスへの接続が失われたときに通知する
接続が失われたときにアプリケーション内の任意の時点で UIAlertView を表示したいので、コードは Application Delegate 内でセットアップされます。
シナリオ 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 == Not Reachable であるかの違いをどのように判断しますか。
理想的には、hostReach に到達できません。現時点では、この特定の API に到達できない可能性があるため、あまりやりたくありません。そのため、その間アプリに完全にアクセスできなくしたくありません。