美文网首页
ios获取运营商、网络信号强度、电池电量

ios获取运营商、网络信号强度、电池电量

作者: 筱贰笔 | 来源:发表于2017-08-29 13:47 被阅读161次

用来备份,方便自己使用,需要的拿去

直接上代码,自己看着办吧😎 也可以选择去GitHub下载☞ZQStatusBarTool

ZQStatusBarTool.h

#import//0 - 无网络 ; 1 - 2G ; 2 - 3G ; 3 - 4G ; 5 - WIFI

typedef NS_ENUM(NSUInteger, NetWorkType) {

NetWorkTypeNone=0,

NetWorkType2G=1,

NetWorkType3G=2,

NetWorkType4G=3,

NetWorkTypeWiFI=5,

};

@interface ZQStatusBarTool : NSObject

/**

*

*

*  @return 当前网络类型

*/

+(NetWorkType )currentNetworkType;

/**

*

*

*  @return SIM卡所属的运营商(公司)

*/

+(NSString *)serviceCompany;

/**

*

*

*  @return 当前电池电量百分比

*/

+(NSString *)currentBatteryPercent;

/**

*

*

*  @return 当前时间显示的字符串

*/

+(NSString *)currentTimeString;

/**

*

*

*

@return 当前信号强度

*/

+ (int )getSignalStrength;

@end

ZQStatusBarTool.m

#import "ZQStatusBarTool.h"#import@implementation ZQStatusBarTool

+(NSString *)currentBatteryPercent{

NSArray *infoArray = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];

for (id info in infoArray)

{

if ([info isKindOfClass:NSClassFromString(@"UIStatusBarBatteryPercentItemView")])

{

NSString *percentString = [info valueForKeyPath:@"percentString"];

return percentString;

}

}

return @"";

}

+(NetWorkType )currentNetworkType{

NSArray *infoArray = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];

NetWorkType type;

for (id info in infoArray)

{

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

type = [[info valueForKeyPath:@"dataNetworkType"] integerValue];

NSLog(@"----%lu", (unsigned long)type);

return (NetWorkType)type;

}

}

return NetWorkTypeNone;

}

+(NSString *)currentTimeString{

NSArray *infoArray = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];

for (id info in infoArray)

{

if ([info isKindOfClass:NSClassFromString(@"UIStatusBarTimeItemView")])

{

NSString *timeString = [info valueForKeyPath:@"timeString"];

NSLog(@"当前显示时间为:%@",timeString);

return timeString;

}

}

return @"";

}

+(NSString *)serviceCompany{

NSArray *infoArray = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];

for (id info in infoArray)

{

if ([info isKindOfClass:NSClassFromString(@"UIStatusBarServiceItemView")])

{

NSString *serviceString = [info valueForKeyPath:@"serviceString"];

NSLog(@"公司为:%@",serviceString);

return serviceString;

}

}

return @"";

}

+ (int )getSignalStrength{

UIApplication *app = [UIApplication sharedApplication];

NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];

UIView *dataNetworkItemView = nil;

for (UIView * subview in subviews) {

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

dataNetworkItemView = subview;

break;

}

}

int signalStrength = [[dataNetworkItemView valueForKey:@"_wifiStrengthBars"] intValue];

NSLog(@"signal %d", signalStrength);

return signalStrength;

}

@end

相关文章

网友评论

      本文标题:ios获取运营商、网络信号强度、电池电量

      本文链接:https://www.haomeiwen.com/subject/cjjodxtx.html