#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» не объявлено. Можете ли вы указать мне правильное направление?