Ограничить приложение iOS только WiFi?

#ios #sdk #wifi

#iOS #sdk #wifi

Вопрос:

Я ищу способ ограничить мое приложение iOS (или даже его часть) только Wi-Fi. Я просмотрел пример достижимости и на самом деле не нашел решения. Я могу заставить его отображать сообщение, когда пользователь подключен к 3g, но я не знаю, как заставить его прекратить загрузку представления.

У меня есть представление, которое загружает другое представление при нажатии кнопки. Я хочу, чтобы это второе представление закрывалось, если устройство подключено к 3g. Как я могу это сделать?

Ответ №1:

Я никогда раньше не делал того, что вы пытаетесь сделать, но я полагаю, что это просто вопрос определения API доступности.

Я бы начал с некоторого кода в вашем классе AppDelegate:

 // ivars
Reachability *wifiReach;
Reachability *hostReach;

- (void) reachabilityChanged: (NSNotification *)note {

    Reachability *curReach = (Reachability *)[note object];

    if ([curReach currentReachabilityStatus] == NotReachable) {
        // do something
    } 

}

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

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

    hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
    [hostReach startNotifier];

    wifiReach = [[Reachability reachabilityForLocalWiFi] retain];
    [wifiReach startNotifier];

    // controller setup
    viewController = [[CFSplashViewController alloc] init];

    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

    return YES;
}
  

Это действительно простой фрагмент кода. Что вы могли бы сделать здесь, это прослушать изменения в статусе доступности, а затем настроить ваше приложение на соответствующую реакцию. Вам не обязательно делать это в вашем классе AppDelegate. Все зависит от того, чего вы хотите достичь.

Комментарии:

1. Спасибо за ответ! Я попытался настроить код, чтобы он работал в моем проекте, но столкнулся с некоторыми проблемами. Он не понимает «CFSplashViewController», поскольку говорит, что использование «window» не объявлено. Можете ли вы указать мне правильное направление?