首先在gitHub下载一个三方文件https://github.com/tonymillion/Reachability。导入

#import "Reachability.h"

若不想写繁琐的网络状况判断代码,并且应用程序能自动在无网络时弹出可跳转到系统设置页面的对话框,那么可以考虑这么做。

在项目中相应的**info.plist文件中增加一个关键字:
<key>SBUsesNetwork</key>
<true/>

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

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

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

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

在AppDelegate.m中写如下代码:

[cpp] view plaincopy
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
  4. //开启网络状况的监听
  5. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
  6. self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
  7. [self.hostReach startNotifier];  //开始监听,会启动一个run loop
  8. self.window.rootViewController = self.tabBarController;
  9. [self.window makeKeyAndVisible];
  10. return YES;
  11. }
  12. //网络链接改变时会调用的方法
  13. -(void)reachabilityChanged:(NSNotification *)note
  14. {
  15. Reachability *currReach = [note object];
  16. NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
  17. //对连接改变做出响应处理动作
  18. NetworkStatus status = [currReach currentReachabilityStatus];
  19. //如果没有连接到网络就弹出提醒实况
  20. self.isReachable = YES;
  21. if(status == NotReachable)
  22. {
  23. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常" message:@"暂无法访问书城信息" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
  24. [alert show];
  25. [alert release];
  26. self.isReachable = NO;
  27. }
  28. else
  29. {
  30. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接信息" message:@"网络连接正常" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
  31. [alert show];
  32. [alert release];
  33. self.isReachable = YES;
  34. }
  35. }

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

[cpp] view plaincopy
  1. AppDelegate *appDlg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  2. if(appDlg.isReachable)
  3. {
  4. NSLog(@"网络已连接");//执行网络正常时的代码
  5. }
  6. else
  7. {
  8. NSLog(@"网络连接异常");//执行网络异常时的代码
  9. }

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

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

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

  1. 台式计算机如何上网设置,台式电脑怎么设置无线网络,教您台式电脑怎么设置无线网络...

    大家都知道笔记本都有自带无线上网的功能,只要搜索得到无线网络的信号,知道它的密码就可以免费上网了.最近,有使用的用户,他的是台式电脑也想连接无线网络上网,要怎么做到呢?下面,小编给大家介绍台式电脑设置 ...

  2. linux终端链接网络,Ubuntu通过命令行设置无线网络连接

    博客搬迁到这里 http://blog.fdawei.me,欢迎访问,大家一起学习交流. 由于Ubuntu的Linux内核对于WPA的加密方式支持不是很好,所有使用普通方式的命令行无法连接WPA2类型 ...

  3. 6s手机为什么不显示4g网络连接服务器,苹果iPhone6S 设置4G网络的方法

    苹果iPhone6S 如何设置4G网络?现在的手机网络都有2G.3G.4G等类型供用户选择,在这些类型当中4G网络是速度最快的网络类型,有时候用户会遇到手机在4G网络覆盖范围内,却无法连接4G的情况, ...

  4. 如何在xp添加无线网络连接服务器,xp怎么设置无线网络连接 windowsxp无线网络连接设置方法【图文】...

    电脑在我们生活中是非常常见的,并且电脑对我们生活影响也是非常的大.除此之外电脑在我们工作中所扮演的角色也是非常重要的,它的出现大大提高了我们的工作效率.而很多朋友在使用电脑的时候都会遇到很多的问题,而 ...

  5. 总结 Underlay 和 Overlay 网络,在k8s集群实现underlay网络,网络组件flannel vxlan/ calico IPIP模式的网络通信流程,基于二进制实现高可用的K8S集群

    1.总结Underlay和Overlay网络的的区别及优缺点 Overlay网络:  Overlay 叫叠加网络也叫覆盖网络,指的是在物理网络的 基础之上叠加实现新的虚拟网络,即可使网络的中的容器可 ...

  6. Windows无法自动检测此网络的代理设置

    安装Proxcap后,Windows 7 下用IE无法打开网页,QQ能上. "windows 无法自动检测此网络的代理设置" 解决方法: 1.点击"开始菜单", ...

  7. shell 判断网线插拔_shell脚本自动检测网络掉线和自动重连

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

  8. linux脚本ping如何自动退出,shell脚本自动检测网络掉线和自动重连

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

  9. shell脚本:自动检测网络掉线和自动重连。

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

最新文章

  1. qt 找不到 -lpulse-mainloop-glib,找不到 -lpulse问题
  2. c3074 无法使用带圆括号的_助力带分类简介
  3. Spring MVC 基础
  4. python apache配置_Apache运行Python的配置
  5. 百般受虐!“波士屯动力”机器人这一次枪口对准人类
  6. linux 环境安装DBI和DBD_03
  7. DP || HYSBZ 1207 打鼹鼠
  8. POJ 1887 (DP)
  9. bzoj4172: 弹珠
  10. 免费资源网站,你想要的全都有【各类宝藏资源 】
  11. chrome Axure插件(Mac版)
  12. 视频剪辑-mkv文件导入PR
  13. 汉王手写板linux驱动下载,汉王笔手写板驱动程序
  14. web前端工程师岗位职责和要求
  15. 人工智能资料库:第37辑(20170220)
  16. SMILES, a Chemical Language and Information System.【SMILES, 一种化学语言和信息系统。】
  17. sso单点登录的PHP实现(Laravel框架)
  18. 常用Android第三方库推荐
  19. kettle快速连接clickhouse
  20. 互联网快讯:武大研发核酸检测新方法;多款「隔离险」仓皇下架;刘传健出任中国民航飞行学院总飞行师

热门文章

  1. python高斯分布训练_Python画图高斯分布的示例
  2. axure日期选择器控件_JavaFX 控件 - 输入 (Control - Inputs)
  3. sql 赋值 null_巩固SQL - 窗口函数amp;变量amp;数据透视图
  4. 分布式内存数据库---Redis操作String、list、set、hash和Zset
  5. 完整的Ubuntu18.04深度学习GPU环境配置,英伟达显卡驱动安装、cuda9.0安装、cudnn的安装、anaconda安装
  6. 未能将网站配置为使用ASP.NET4.0,不能打开VS项目
  7. 数据分析如何入门,以及如何做职业规划?
  8. 如何通过Meta Learning实现域泛化(Domain Generalization)?
  9. 北京招聘 | 澜舟科技招聘NLP工程师、NLP研究员、产品项目经理
  10. 随机数据的构造与使用