您的位置:首页 > 移动开发 > IOS开发

iOS开发之获取WIFI信号强度

2020-01-15 11:50 3207 查看

虽然各种直接获取信号强度的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;
}
}
}
}

 

转载于:https://www.cnblogs.com/starainDou/p/5781130.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
ad4576690 发布了1 篇原创文章 · 获赞 1 · 访问量 1419 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: