自动检测iOS网络并可跳转至设置界面设置网络

原创 2012年11月10日 15:42:55
若不想写繁琐的网络状况判断代码,并且应用程序能自动在无网络时弹出可跳转到系统设置页面的对话框,那么可以考虑这么做。
在项目中相应的**info.plist文件中增加一个关键字:
<key>SBUsesNetwork</key>
<true/>

应用程序就会自动检测网络状况,在网络异常的情况下,会弹出网络设置对话框提醒用户是否进行网络设置,并且可以跳转至系统设置中进行昂立设置。


其实在IOS5.1+之后,苹果就删除了程序跳转至设置界面的功能了,不知道为什么。。。

所以自己写代码也是不可能实现的,只能够对网络进行监听,然后提醒用户网络链接异常而已。

下面是监听网络改变的代码,可以参考一下:

在AppDelegate.m中写如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    
    //开启网络状况的监听
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
    
    self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
    [self.hostReach startNotifier];  //开始监听,会启动一个run loop

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

//网络链接改变时会调用的方法
-(void)reachabilityChanged:(NSNotification *)note
{
    Reachability *currReach = [note object];
    NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
    
    //对连接改变做出响应处理动作
    NetworkStatus status = [currReach currentReachabilityStatus];
    //如果没有连接到网络就弹出提醒实况
    self.isReachable = YES;
    if(status == NotReachable)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常" message:@"暂无法访问书城信息" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
        [alert show];
        [alert release];
        self.isReachable = NO;
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接信息" message:@"网络连接正常" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
        [alert show];
        [alert release];
        self.isReachable = YES;
    }
}

通过如上代码,在应用程序的任何一个界面都可以使用下面的单例来判断网络是否连接

    AppDelegate *appDlg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    if(appDlg.isReachable)
    {
        NSLog(@"网络已连接");//执行网络正常时的代码
    }
    else
    {
        NSLog(@"网络连接异常");//执行网络异常时的代码
    }

然后就可以执行响应的操作了,这样使用监听的好处就是,不必在每一个需要检测网络链接情况的地方都写一大堆代码,只需要上面的监听,网络改变的时候,在任何一个地方都可以自定提醒用户。

监听就是这样滴好用,(*^__^*) 嘻嘻……任何对象都可以接收。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS 访问网络权限

访问网络有可能出现错误提示 The resource could not be loaded because the App Transport Security policy requires th...

iOS开发中实时监听app的网络连接状态问题

在开发中,网络是必不可少的一部分,有网络请求的地方就必须得需要网络的支持,所以就必须在进行网络请求的时候知晓当前的网络连接状态,但是如果每一次的网络请求都进行一次当前的网络状态查询显然是不科学的,所以...

iOS,利用URL Schemes跳转到设置wifi、蜂窝移动网络页面

一. 跳转到“设置” //>=iOS8.0可用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicatio...

iOS10跳转系统设置的正确姿势

在iOS10更新后,系统设置跳转被禁用,只能跳转App设置? NO, NO, NO, 看这里,又可以换个姿势愉快的跳转啦。 其实方法很简单,例如原有跳转Wi-Fi设置是"prefs:root...
  • j_AV_a
  • j_AV_a
  • 2017-04-17 18:06
  • 1796

无网或断网提示,自定义界面(UIView分类,使用方便)

由于项目中需要添加无网或者断网条件下的提示界面,所以就简单的写了一个提示的界面.记得之前在一份源码中见过类似的场景,但是忘了是哪一个了,也没有找到.因为项目中多数界面都使用到这个无网提示界面,包含控制...
  • hu9134
  • hu9134
  • 2016-05-11 16:08
  • 1567

在ios 设备没有网络的情况下在app中如何弹出设置无线网络的提示框

在ios设备没有网络的情况下,在app中如何弹出设置无线网络的提示框 这种情况基本上有两种解决方案 方案一: 适用范围:ios5.0及之前的iOS版本 方法:这是一个广为流传的...

自动检测iOS网络并可跳转至设置界面设置网络

若不想写繁琐的网络状况判断代码,并且应用程序能自动在无网络时弹出可跳转到系统设置页面的对话框,那么可以考虑这么做。 在项目中相应的**info.plist文件中增加一个关键字: SBUsesNet...

iOS开发之如何跳到系统设置里的WiFi界面

之前以为,苹果不支持直接从应用跳到系统设置里的WiFi界面。后来发现,这个小功能是可以实现的,而且实现起来并不麻烦。让我们一起来看看吧! 需求 从应用跳到系统设置里的WiFi界面有这个需求...

自动检测iOS网络并可跳转至设置界面设置网络

若不想写繁琐的网络状况判断代码,并且应用程序能自动在无网络时弹出可跳转到系统设置页面的对话框,那么可以考虑这么做。 在项目中相应的**info.plist文件中增加一个关键字: SBUsesNet...

ios检测网络状态改变

使用之前请从Apple网站下载示例:点此下载 然后将Reachability.h 和 Reachability.m 加到自己的项目中,并引用 SystemConfiguration.framew...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)