2015-06-05 2 views
-1

Я работаю над XMPP-приложением. я хочу установить, что пользовательское устройство не подключено к Интернету, и они пытаются войти в приложение, тогда появится предупреждение о том, что you are not connected to internet. Я пробовал это, но не добился успеха. Вот моя попытка. что мне нужно изменить?iOS XMPP проверить подключение к Интернету

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

if (![self connect]) 
{ 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.0 * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 



     NSLog(@"not connected."); 
    }); 
} 
+0

Почему у вас есть отложенная отправка, а затем предупреждение. Этот код буквально не имеет смысла. Кроме того, это не место для проверки этого соединения, вы должны сделать это в ViewController .... – TheCodingArt

+0

, так что я должен делать? Я не знаю, как это сделать? я просто попробовал, когда приложение запускает проверку на наличие Интернета и в настоящее время печатает журнал. если интернет не доступен. –

+1

Я бы предположил, что если библиотека работает, она проверяет форму Интернета (я не знаком с этой библиотекой и обычно использую образец кода Apple для проверки подключения к Интернету). Эта библиотека проверяет только локальный Wi-Fi? Вы подключены к локальному Wi-Fi? Или вы подключены к сотовой сети ... или ничего? Вы также подтвердили в Safari, что вы подключены без экрана пароля или что-то еще? Возможно, вы захотите проверить свои результаты с помощью рамочной платформы/образца кода. – TheCodingArt

ответ

0

Проверка подключения к Интернету, выполнив запрос ГОЛОВА очень плохой способ сделать то, что вы хотите. Пользователю может потребоваться около 60 секунд (таймаут по умолчанию для HTTP-запросов), чтобы определить, что у него нет подключения к Интернету! Это определенно НЕ то, что пользователь ждет, когда ваш продукт будет действовать! Существует лучший способ определить доступность интернет-соединения - это функции мониторинга Reachability. Есть хороший block-based wrapper для этого я настоятельно рекомендую вам посмотреть.

+0

благодарим за советом. но как насчет этого предупреждения? »ПРЕДУПРЕЖДЕНИЕ Сообщалось, что приложения отклоняются, когда Reachability используется в рамках. Единственным решением для этого до сих пор является переименование класса. « –

+0

все в порядке. предупреждение предназначено для тех, кто создает собственную структуру, которая использует этот класс. Вы можете просто переименовать его во все, что хотите. Мои проекты используют этот класс и никогда не были отклонены по этой причине. –

-2

Попробуйте этот код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    //Check internet connectivity 
    if(![self connectedToInternet]) 
    { 
     UIAlertView *uiAlertView = [[UIAlertView alloc] 
            initWithTitle:NSLocalizedString(@"Connection Error", @"Connection Error") 
            message:@"you are not connected to internet" 
            delegate:nil 
            cancelButtonTitle:NSLocalizedString(@"Ok", @"Ok") 
            otherButtonTitles:nil]; 
     [uiAlertView show]; 
    }else 
    { //internet connection was connected 
    } 
    return YES; 
} 

- (BOOL)connectedToInternet 
{ 
    NSURL *url=[NSURL URLWithString:@"http://www.google.com"]; 
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url]; 
    [request setHTTPMethod:@"HEAD"]; 
    NSHTTPURLResponse *response; 
    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error: NULL]; 

    return ([response statusCode]==200)?YES:NO; 
} 
+0

спасибо брату. оно работает. У меня есть еще один вопрос. этот код также проверяет тайм-аут сервера? Я подключен к Интернету, но сервер не даст ответа. –

+0

Вы не должны проверять доступность интернет-соединения таким образом! Вместо этого используйте [Достижимость] (https://github.com/tonymillion/Reachability). –

+0

вы также можете использовать [Reachablity] (https://github.com/tonymillion/Reachability) или Apple в [Demo] (http://developer.apple.com/library/ios/samplecode/Reachability). Я предлагаю вам использовать от Apple. – Mahesh