2011-06-10 78 views
0

我正在寻找一种方法来限制我的iOS应用程序(或甚至它的一部分)只有WiFi。我查看了可达性示例,并没有真正想出解决方案。我可以在用户连接到3G时显示消息,但我不知道如何让它停止加载视图。限制iOS应用程序只有WiFi?

我有一个视图,当按下按钮时加载另一个视图。如果设备连接到3G,我希望关闭第二个视图。我怎么能这样做呢?

回答

3

我从来没有做过你以前想做的事情,但我想这只是搞清楚Reachability 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类中执行此操作。这完全取决于你想完成什么。

+0

感谢您的回应!我试图调整代码,使其在我的项目中工作,但我遇到了一些麻烦。它不理解“CFSplashViewController”,因为使用“window”未声明。你能为我指出正确的方向吗? – user636127 2011-06-10 05:13:51