iOS 获取wifi信号强度

来源:互联网 发布:剑三商城捏脸数据导入 编辑:程序博客网 时间:2024/04/29 00:25

虽然各种直接获取信号强度的api都被封杀了。但是还有一个另类的黑魔法可以获取到。那就是遍历UIStatusBar了

- (void)getSignalStrength{    UIApplication *app = [UIApplication sharedApplication];    NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];    NSString *dataNetworkItemView = nil;    for (id subview in subviews) {        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {            dataNetworkItemView = subview;            break;        }    }    int signalStrength = [[dataNetworkItemView valueForKey:@"_wifiStrengthBars"] intValue];    NSLog(@"signal %d", signalStrength);}

当然我们还可以遍历UIStatusBar 获取到网络连接类型

- (void)getNetworkType{    UIApplication *app = [UIApplication sharedApplication];    NSArray *subviews = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];    for (id subview in subviews) {        if ([subview isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {            int networkType = [[subview valueForKeyPath:@"dataNetworkType"] intValue];            switch (networkType) {                case 0:                    NSLog(@"NONE");                    break;                case 1:                    NSLog(@"2G");                    break;                case 2:                    NSLog(@"3G");                    break;                case 3:                    NSLog(@"4G");                    break;                case 5:                {                    NSLog(@"WIFI");                }                    break;                default:                    break;            }        }    }}
1 0
原创粉丝点击