Тестирование интернет-соединения не работает с Reachability

Я использую обновленную библиотеку Reachability, чтобы проверить, доступно ли подключение к Интернету. Я пытаюсь зарегистрировать сообщение, если Интернет недоступен, но журнал не отлаживает:

//Test the internet connection
Reachability* reach = [Reachability reachabilityForInternetConnection];
reach.unreachableBlock = ^(Reachability*reach)
{
    NSLog(@"Internet connexion unreachable");//Although Internet cnx is off, this message is not displayed
    return;
};

// start the notifier which will cause the reachability object to retain itself!
[reach startNotifier];

Я неправильно понимаю библиотеку Reachability? Как выполнить заданную задачу при отключенном Интернете? Спасибо.

P.S: Мой iPad работает только с Wi-Fi, без 3G.


person Malloc    schedule 07.02.2013    source источник


Ответы (3)


Использование Alamofire для проверки интернера, In Swift 4

import Foundation
import Alamofire

class Connectivity {

   class func isConnectedToInternet() ->Bool {
        return NetworkReachabilityManager()!.isReachable
   }
}

Затем вызовите эту функцию

if Connectivity.isConnectedToInternet() {
    print("Yes! internet is available.")
    // do some tasks..
}
person Sahidul Islam    schedule 11.03.2018

На самом деле, вы должны зарегистрироваться для получения уведомления об изменении доступности:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

Посмотрите на пример Apple здесь: http://developer.apple.com/library/ios/#samplecode/Reachability/Listings/Classes_ReachabilityAppDelegate_m.html#//apple_ref/doc/uid/DTS40007324-Classes_ReachabilityAppDelegate_m-DontLinkElementID_4

person Yaman    schedule 07.02.2013
comment
Привет, спасибо за ваш ответ. На самом деле я обнаружил, что необходимость использовать @selector иногда бесполезна. Пожалуйста, посмотрите мой ответ, он отлично работает и делает именно то, что я хочу. - person Malloc; 08.02.2013

Итак, лучший способ, который я получил, это следующий пример кода Apple:

   //Test the internet connection
   Reachability* reach = [Reachability reachabilityForInternetConnection];

   NetworkStatus netStatus = [reach currentReachabilityStatus];
   //See if the reachable object status is "ReachableViaWifi"
if (netStatus!=ReachableViaWiFi) {
    //If not
    NSLog(@"wifi unavailable");
    //Alert the user about the Internet cnx
    WBErrorNoticeView *notice = [WBErrorNoticeView errorNoticeInView:self.view title:@"Network Error" message:@"Check your internet connection."];
    notice.sticky = NO;
    [notice show];
    return;//Exit the method
}
person Malloc    schedule 07.02.2013