今天有时间想对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值。
最后贴出一张截图是感觉比较有用的几个信息类说明,希望能帮到大家:
附详细代码:https://github.com/guanalongaaa/iPhone-information.git