我正在开发一个应用程序,我必须检查互联网连接。我使用了两个文件Reacvicity.h和Reacvicity.m。现在,当互联网不工作时,我必须显示一个警报。
但是当我的观察者查看互联网时,它不止一次地显示警报视图。有时,它会显示9-10次以上的警报。我的代码如下:
在.h文件中
Reachability* internetReachable;
Reachability* hostReachable;
NetworkStatus internetStatus;
在.m文件中
internetReachable = [[Reachability reachabilityForInternetConnection] retain];
[internetReachable startNotifier];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
hostReachable = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReachable startNotifier];
- (void) checkNetworkStatus:(NSNotification *)notice
{
internetStatus = [internetReachable currentReachabilityStatus];
if (internetStatus != NotReachable){
NSLog(@"internet is on");
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"Server not connected or down!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
internetCount++;
}
}
这段代码是在委托中编写的,类似地,我在其他类中也使用了这段代码,只要我需要检查internet
请帮助
发布于 2011-07-11 02:22:22
我不使用Reachability,因为我遇到了像您一样的问题,所以我创建了自己的实现。只需导入下面的头文件,然后调用[self networkIsReachable]
来检查internet连接。
#import <netinet/in.h>
- (BOOL)networkIsReachable
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL gotFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!gotFlags) {
return NO;
}
BOOL isReachable = flags & kSCNetworkReachabilityFlagsReachable;
BOOL noConnectionRequired = !(flags & kSCNetworkReachabilityFlagsConnectionRequired);
if ((flags & kSCNetworkReachabilityFlagsIsWWAN)) {
noConnectionRequired = YES;
}
return (isReachable && noConnectionRequired) ? YES : NO;
}
https://stackoverflow.com/questions/6642953
复制相似问题