IOS的网络提示(E\2G\3G\4G\WIFI\无网)

网络提示是App开发中不可缺少的模块。现在App需求智能化,要求根据网络的变化可以自动做出合理的处理(包括提示、下载...等)。对于网络的处理也非常简单,实现也就几行代码(这是因为,苹果对网络变化进行了整理)。 苹果官方提供一个监控网络变化的文件名字为 Reachability。对于ReachabilityReachability 的介绍

   Reachability(官方)的获取方法是打开Xcode,同事按住 " command + shift + / " 就可以调出这个界面,如下:


 

点击 Documentation and API Reference  后会出现下面图:


在红色(红色是我标记的,其实是没有的)的框内输入  Reachability ,然后会弹出下图:


点击红色框内的 Reachability ,然后弹出下面的图:


在点击  Open Project ,打开并下载该工程。


3、官方 Reachability 的不足

  看官方给出的监控返回类型如下:


从上图我们可以看到官方,支持的情况。不足在于手机网络模式整合,不能区分2G\3G\4G、E等网络。

4、我们对官方的  Reachability 进行扩展,让其支持 2~4G和E 网络。

1》修改官方返回的网络枚举,如下图:



2》添加 #import<CoreTelephony/CTTelephonyNetworkInfo.h> 库,如下图:


3》核心代码更改区,如下图:

 

  1. #pragma mark - Network Flag Handling  
  2.   
  3. - (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags  
  4. {  
  5.     PrintReachabilityFlags(flags, "networkStatusForFlags");  
  6.     if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)  
  7.     {  
  8.         // The target host is not reachable.  
  9.         return NotReachable;  
  10.     }  
  11.   
  12.     NetworkStatus returnValue = NotReachable;  
  13.   
  14.     if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)  
  15.     {  
  16.         /* 
  17.          If the target host is reachable and no connection is required then we'll assume (for now) that you're on Wi-Fi... 
  18.          */  
  19.         returnValue = ReachableViaWiFi;  
  20.   
  21.     }  
  22.   
  23.     if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) ||  
  24.         (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))  
  25.     {  
  26.         /* 
  27.          ... and the connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs... 
  28.          */  
  29.   
  30.         if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)  
  31.         {  
  32.             /* 
  33.              ... and no [user] intervention is needed... 
  34.              */  
  35.             returnValue = ReachableViaWiFi;  
  36.   
  37.         }  
  38.     }  
  39.   
  40.     if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)  
  41.     {  
  42.         /* 
  43.          ... but WWAN connections are OK if the calling application is using the CFNetwork APIs. 
  44.          */  
  45.         /*! 版本兼容 
  46.          */  
  47.         float systemVersion = [UIDevice currentDevice].systemVersion.floatValue;  
  48.         if (systemVersion>=7.0) {  
  49.             CTTelephonyNetworkInfo *  telephonyNetwork = [CTTelephonyNetworkInfo new];  
  50.             /*! 获取当前网络的名字 
  51.              */  
  52.             NSString * NetworkNameString = [telephonyNetwork currentRadioAccessTechnology];  
  53.             if (NetworkNameString) {  
  54.                 /*! 网络区分 
  55.                  CTRadioAccessTechnologyGPRS - 2G 
  56.                  CTRadioAccessTechnologyEdge - 2G (sometimes called 2.5G) 
  57.                  CTRadioAccessTechnologyWCDMA - 3G 
  58.                  CTRadioAccessTechnologyHSDPA - 3G (sometimes called 3.5G) 
  59.                  CTRadioAccessTechnologyHSUPA - 3G 
  60.                  CTRadioAccessTechnologyCDMA1x - 2G 
  61.                  CTRadioAccessTechnologyCDMAEVDORev0 - 3G 
  62.                  CTRadioAccessTechnologyCDMAEVDORevA - 3G 
  63.                  CTRadioAccessTechnologyCDMAEVDORevB - 3G 
  64.                  CTRadioAccessTechnologyeHRPD - 3G (or 3.5 - eHRPD is to allow migration from CDMA EVDO to LTE) 
  65.                  CTRadioAccessTechnologyLTE - 4G (allowed to be called 4G by the ITU as mentioend above) 
  66.                  */  
  67.                 if ([NetworkNameString isEqualToString:CTRadioAccessTechnologyGPRS]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyEdge]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyCDMA1x]) {  
  68.                     returnValue = ReachableVia2G;  
  69.                 }else if ([NetworkNameString isEqualToString:CTRadioAccessTechnologyWCDMA]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyHSDPA]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyHSUPA]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyHSUPA]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]||[NetworkNameString isEqualToString:CTRadioAccessTechnologyeHRPD]){  
  70.                     returnValue = ReachableVia3G;  
  71.                 }else if ([NetworkNameString isEqualToString:CTRadioAccessTechnologyLTE]){  
  72.                     returnValue = ReachableVia4G;  
  73.                 }else{  
  74.                     returnValue = ReachableViaWWAN;  
  75.                 }  
  76.             }else{  
  77.                 returnValue = ReachableViaWWAN;  
  78.             }  
  79.         }else{  
  80.             /*! 低版本 
  81.              */  
  82.             returnValue = ReachableViaWWAN;  
  83.         }  
  84.     }  
  85.     return returnValue;  
  86. }  


5、对无网络的设置处理,做兼容,如下图:


6、完整的Demo下载地址

链接: https://pan.baidu.com/s/1hsysOPe 密码: jz3q

7、效果图


http://bbs.open.qq.com/thread-41299806-1-1.html
http://club.suning.com/thread-2332951-1-1.html
http://club.suning.com/thread-2332952-1-1.html
http://club.suning.com/thread-2332950-1-1.html
http://bbs.open.qq.com/thread-41311291-1-1.html
http://bbs.open.qq.com/thread-41317646-1-1.html
http://bbs.open.qq.com/thread-41317523-1-1.html
http://bbs.open.qq.com/thread-41317410-1-1.html
http://bbs.open.qq.com/thread-41317312-1-1.html
http://bbs.open.qq.com/thread-41317117-1-1.html

http://bbs.open.qq.com/thread-41316953-1-1.html
http://bbs.open.qq.com/thread-41316781-1-1.html
http://bbs.open.qq.com/thread-41316558-1-1.html
http://bbs.open.qq.com/thread-41316180-1-1.html
http://bbs.open.qq.com/thread-41315764-1-1.html
http://bbs.open.qq.com/thread-41315504-1-1.html
http://bbs.open.qq.com/thread-41314843-1-1.html
http://bbs.open.qq.com/thread-41314185-1-1.html
http://bbs.open.qq.com/thread-41313632-1-1.html
http://bbs.open.qq.com/thread-41313516-1-1.html
http://bbs.open.qq.com/thread-41313394-1-1.html
http://bbs.open.qq.com/thread-41313245-1-1.html
http://bbs.open.qq.com/thread-41313092-1-1.html
http://bbs.open.qq.com/thread-41312914-1-1.html
http://bbs.open.qq.com/thread-41312207-1-1.html
http://bbs.open.qq.com/thread-41311291-1-1.html
http://bbs.open.qq.com/thread-41309693-1-1.html
http://bbs.open.qq.com/thread-41307900-1-1.html
http://bbs.open.qq.com/thread-41307765-1-1.html
http://bbs.open.qq.com/thread-41307680-1-1.html
http://bbs.open.qq.com/thread-41307585-1-1.html
http://bbs.open.qq.com/thread-41307525-1-1.html
http://bbs.open.qq.com/thread-41305683-1-1.html
http://bbs.open.qq.com/thread-41305565-1-1.html
http://bbs.open.qq.com/thread-41305508-1-1.html
http://bbs.open.qq.com/thread-41305375-1-1.html
http://bbs.open.qq.com/thread-41305282-1-1.html
http://bbs.open.qq.com/thread-41305169-1-1.html
http://bbs.open.qq.com/thread-41304911-1-1.html
http://bbs.open.qq.com/thread-41304753-1-1.html
http://bbs.open.qq.com/thread-41304599-1-1.html
http://bbs.open.qq.com/thread-41303486-1-1.html
http://bbs.open.qq.com/thread-41303382-1-1.html
http://bbs.open.qq.com/thread-41303290-1-1.html
http://bbs.open.qq.com/thread-41303220-1-1.html
http://bbs.open.qq.com/thread-41303144-1-1.html
http://bbs.open.qq.com/thread-41303056-1-1.html
http://bbs.open.qq.com/thread-41302940-1-1.html
http://bbs.open.qq.com/thread-41302836-1-1.html
http://bbs.open.qq.com/thread-41302710-1-1.html
http://bbs.open.qq.com/thread-41302506-1-1.html
http://bbs.open.qq.com/thread-41302272-1-1.html
http://bbs.open.qq.com/thread-41302124-1-1.html
http://lvyou.baidu.com/plan/07bb04ccb6d8b30d14cfef28
http://lvyou.baidu.com/plan/9d89efe97a230738bf238538
http://lvyou.baidu.com/plan/31bc416aa4dafa28ad216106
http://lvyou.baidu.com/plan/2abcd09c11d463b4a9d11ff9
http://lvyou.baidu.com/plan/ae15770ba2ae44da9e172eee
http://lvyou.baidu.com/plan/adb1250382f97ce8ceddfbf5
http://lvyou.baidu.com/plan/8f016f1d093fb20082f9f9bc
http://lvyou.baidu.com/plan/b63f2820536896e6f1bf886c
http://lvyou.baidu.com/plan/8a35861fd374140f90f0eb7f
http://lvyou.baidu.com/plan/e7aa30404a3ab91b77ef525b

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值