2012-06-26 2 views
1

Я пробовал некоторые сообщения, доступные на этом сайте. Но в моем приложении iphone, если интернет не подключен, он не показывает никаких ошибок. он просто показывает вид загрузки. Я использовал следующий код для этогоПроверка подключения к Интернету не отображается.

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
error=nil; 
if(error != nil) 
{ 

    UIAlertView * alert; 
    if([[error localizedDescription] isEqualToString:@"no Internet connection"]) 
    { 
     alert = [[UIAlertView alloc] initWithTitle:@"No Internet connection" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
    } 

    else 
    { 
     alert = [[UIAlertView alloc] initWithTitle:@"Connection failed" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
    } 
    [alert release]; 
} 
} 

Это предупреждение никогда не отображается, даже если интернет не подключен. Может кто-нибудь мне помочь? Заранее спасибо

+0

Вы получаете выше сообщение об ошибке для подключения к Интернету в '[ошибка localizedDescription]'? – Dhruv

+0

Как это проверить? – priya

+0

Когда подключение к Интернету отключено, вы получаете одно и то же сообщение, как написано в блоке? добавьте эту линию в метод. NSLog (@ "Error ::% @", [error localizedDescription]); – Dhruv

ответ

4

См this Пример кода от компании Apple относительно достижимости.

И реализовать определенные необходимые методы.

+0

Это это правильный ответ для меня тоже;) –

0

here являются коды ошибок NSURLConnection в настоящее время поддерживают

код ошибки для подключения к интернету является NSURLErrorNotConnectedToInternet = -1009,

вы можете использовать это в вашем состоянии, когда вы получили NSError об ошибке *

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    if(error != nil) 
    { 
     if ([error code] == NSURLErrorNotConnectedToInternet) { 
      //not connected to internet 
     } 
    } 

} 
1

Используйте этот код ...

определяют этот

#define AF_INET  2 

и осуществить это,

- (BOOL) connectedToNetwork 

{

struct sockaddr_in zeroAddress; 
bzero(&zeroAddress, sizeof(zeroAddress)); 
zeroAddress.sin_len = sizeof(zeroAddress); 
zeroAddress.sin_family = AF_INET; 

// Recover reachability flags 
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); 
SCNetworkReachabilityFlags flags; 

BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); 
CFRelease(defaultRouteReachability); 

if (!didRetrieveFlags) 
{  
    printf("Error. Could not recover network reachability flags\n"); 
    return 0; 
} 
BOOL isReachable = flags & kSCNetworkFlagsReachable; 
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; 
return (isReachable && !needsConnection) ? YES : NO; 

}

использование BOOL, чтобы проверить,

BOOL check = [self connectedToNetwork]; 

А затем проверить это условие,

if (!check) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Your internet connection is currently unavailable. Please try to connect later." 
                delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 
Смежные вопросы