iOS 状态栏数据获取(服务商,网络状态,信号,电量)

今天有时间想对iPhone 基本信息获取做一简单总结,在写的时候发现一段很实用的代码,特意贴出来做个记录,也供大家使用:

NSString * result;
NSArray *statusBarSubviews = [[[[[UIApplication sharedApplication] valueForKey:@"_statusBar"] subviews] lastObject] subviews];
            
            for (id subview in statusBarSubviews) {
                
                if ([subview isKindOfClass:NSClassFromString(@"UIStatusBarBatteryPercentItemView")])
                {
                    
                    //系统方法直接通过键值对拿到100%
                    result = [subview valueForKey:@"_percentString"];
                    
                }
                
            }

整段代码就是这些,完全没有设么需要理解的。
用上面方法所拿到的statusBarSubviews 是一个信息集合数组,我们需要哪个信息就用

if ([subview isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")])
                {

                    //系统方法直接通过键值对拿到100%
                    result = [subview valueForKey:@"dataNetworkType"];

                }

做对应判断即可,然后取相应键值对判断:
例如:,dataNetworkType类型是NSNumber,值是5。
经过测试,发现,可能的值为 1,2,3,5 分别对应的网络状态是2G、3G、4G及WIFI。 当没有网络时,隐藏UIStatusBarDataNetworkItemView,无法获取dataNetworkType值。

最后贴出一张截图是感觉比较有用的几个信息类说明,希望能帮到大家:

iOS 状态栏数据获取(服务商,网络状态,信号,电量)_第1张图片
对应信息说明.png

附详细代码:https://github.com/guanalongaaa/iPhone-information.git

你可能感兴趣的:(iOS 状态栏数据获取(服务商,网络状态,信号,电量))