こんにちは、Apple の到達可能性コードにいくつか問題があります。私が見つけたのは、デバイスがインターネットに正しく接続されていても、最初に到達可能性コードが 1 つの誤った通知 (Networkstatus = NotReachable) を送信し、続いていくつかの正しい通知 (Networkstatus = ReachableViaWiFi) を送信することです。したがって、「NotReachable」通知を受け取ったときに UIAlertView を表示しているため、デバイスがインターネットに接続されていても、アプリはデバイスが接続されていないことをユーザーに通知する uialertview を出力します。
この不都合を回避する方法はありますか?
どんな助けでも本当に感謝しています。
これは私のコードです:
私の .h ファイルで:
@property (nonatomic, retain) Reachability *hostReach;
私の.mファイルでは:
- (void)viewDidLoad
{
self.hostReach = [Reachability reachabilityWithHostname:@"www.google.com"];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
[_hostReach startNotifier];
NetworkStatus netStatus = [self.hostReach currentReachabilityStatus];
if(netStatus == NotReachable && _alertShowing==NO){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"No internet connection found"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
_alertShowing = YES;
[alert show];
}
...
}
-(void)reachabilityChanged:(NSNotification *)note {
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
NetworkStatus netStatus = [curReach currentReachabilityStatus];
if(netStatus == NotReachable && _alertShowing==NO){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"No internet connection found"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
_alertShowing = YES;
[alert show];
}
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
_alertShowing = NO;
}