2015-06-23 5 views
0

Я использую Reachability.m/.h, чтобы проверить статус интернет/wifi. Все отлично работает с Библиотекой, я получаю уведомление каждый раз, когда статус изменяется благодаря уведомителю и наблюдателю, но иногда (редко, но все же, иногда) статус не изменяется.Как заставить проверить доступность Интернета с помощью Reachability.m/.h

В некоторой части моего кода мне нужно «принудительно» проверить доступность. Есть ли способ сделать это с классом Reachability.m/.h?

+0

проверить мой ответ, если это поможет вам не забыть принять это также, если вам нужно больше разъяснений, просто дайте мне знать, удачи – samouray

+1

Если вы хотите попробовать родную версию Reachability, вы можете взглянуть на https://github.com/ashleymills/Reachability.swift - это может работайте лучше для вас. –

ответ

0

создать метод с именем connected:

- (BOOL)connected 
{ 
    Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 
    return networkStatus != NotReachable; 
} 

Используйте его, как это, когда вы хотите, чтобы проверить достижимость:

if (![self connected]) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No connection" message:@"you have to be connected in order to continue" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     NSLog(@"no connection"); 
    } else { 
// the user is connected , write your code here 
} 
+0

Ваше решение отлично выглядит, но оно не работает. Когда я делаю тест: if (! [Self connected]), я могу ввести «if», даже если у меня нет сетевого подключения ... Так, например, я могу ввести «if», пока у меня будет Parse error: Ошибка: Ошибка Домен = NSURLErrorDomain Code = -1009 «Подключение к Интернету отключено». – user3369214

+0

Вы можете использовать такой метод, чтобы справиться с этим: - (void) connection: (NSURLConnection *) connection сделалFailWithError: (NSError *) error { NSLog (@ "connection didFailWithError"); если (error.code == - 1009) { // показать предупреждение пользователю, чтобы сказать ему, чтобы подключиться к Интернету } } – samouray

+0

Я сделал это, но до сих пор, я никогда не войти в «didFailWithError» даже если у меня есть ошибка -1009. Должен ли я добавить что-то в info.plist? Или мне нужно что-то придумать? – user3369214