博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS获取当前网络类型(Wifi、2G、3G、4G)
阅读量:5998 次
发布时间:2019-06-20

本文共 2316 字,大约阅读时间需要 7 分钟。

在工程添加:SystemConfiguration.framework

去苹果API里搜索Reachability,(点击左上角Download Sample Code 即可下载),把demo里的Reachability.h和Reachability.m拖到自己的工程里。也可以在百度里面搜索”Reachability”,然后下载,不一定非要到苹果官网去下载。

但是使用Reachability有一个问题,就是它只能判断当前是Wifi或者手机自带网络,没有办法详细得判断2G、3G、4G。

如果确定为手机自带网络,这时可以使用系统自带的API来判断是2G、3G还是4G,这就要使用到CTTelephonyNetworkInfo这类,记得在工程添加CoreTelephony.framework

记得导入头文件:

import "Reachability.h"

import <CoreTelephony/CTCarrier.h>

import <CoreTelephony/CTTelephonyNetworkInfo.h>

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

#import "Reachability.h"

#include <sys/param.h>

#include <sys/mount.h>

 #endif

下面附上我在项目中使用的代码:

+ (NSString *)getNetconnType{    NSString *netconnType = @"";    Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];    switch ([reach currentReachabilityStatus]) { case NotReachable:// 没有网络 { netconnType = @"no network"; } break; case ReachableViaWiFi:// Wifi { netconnType = @"Wifi"; } break; case ReachableViaWWAN:// 手机自带网络 { // 获取手机网络类型 CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; NSString *currentStatus = info.currentRadioAccessTechnology; if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyGPRS"]) { netconnType = @"GPRS"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyEdge"]) { netconnType = @"2.75G EDGE"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyWCDMA"]){ netconnType = @"3G"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyHSDPA"]){ netconnType = @"3.5G HSDPA"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyHSUPA"]){ netconnType = @"3.5G HSUPA"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMA1x"]){ netconnType = @"2G"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORev0"]){ netconnType = @"3G"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORevA"]){ netconnType = @"3G"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORevB"]){ netconnType = @"3G"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyeHRPD"]){ netconnType = @"HRPD"; }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyLTE"]){ netconnType = @"4G"; } } break; default: break; } return netconnType; }

转载于:https://www.cnblogs.com/liugangBlog/p/11104000.html

你可能感兴趣的文章
Linux 定时任务 crontab
查看>>
eos中BM与有BM特色的去中心化。区块链世界,白皮书为共识,代码为法律。
查看>>
字体大小自适应纯css解决方案
查看>>
Java程序员面试失败的5大原因
查看>>
我认识的python(5)
查看>>
Promise实现
查看>>
报表性能优化
查看>>
js设计模式--迭代器模式
查看>>
Python 学习笔记之——用 sklearn 对数据进行预处理
查看>>
阿里云ECS连接数据库教程方法
查看>>
react
查看>>
PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.21. 例子程序
查看>>
iOS 性能优化
查看>>
Python异常处理
查看>>
Docker harbor 推送
查看>>
CUDA学习(四十七)
查看>>
Skype For Business 2015实战系列10:安装管理工具
查看>>
轻松使用二进制安装Mysql5.6
查看>>
Silverlight用户控件转移时产生的“元素已经是另一个元素的子元素”问题
查看>>
mysql主从复制及mysql-proxy0.8安装
查看>>