从状态栏崩溃获取手机信号
下面是我的代码,我试图通过状态栏获取信号强度。从状态栏崩溃获取手机信号
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
碰撞发生在(iOS的11时,Xcode 9,iPhone X): -
[UIStatusBar_Modern valueForUndefinedKey:]:这个类不是密钥值编码兼容的关键foregroundView
你可以用这个
NSArray *subviews = nil;
id statusBar = [[UIApplication sharedApplication] valueForKey:@"statusBar"];
if ([statusBar isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
subviews = [[[statusBar valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
} else {
subviews = [[statusBar valueForKey:@"foregroundView"] subviews];
}
我有问题发布这个,从哪个关键得到如果wifi,3g或lte在那里..? – Ashish
谢谢@yz wu这正是我正在寻找的+1 –
@Ashish上面的代码片段解决了iPhone X更改的问题。为了获得代码,你必须循环子视图来提取'UIStatusBarDataNetworkItemView'视图,然后获取其'dataNetworkType'值。它是这样的。 '为(在子视图ID子视图){' '如果([子视图isKindOfClass:' '[NSClassFromString(@ “UIStatusBarDataNetworkItemView”)类]]){' '[(的NSNumber *)[子视图valueForKey:@“dataNetworkType”] intValue]; // dataNetworkType值一定要存储和使用它,或者从方法中返回它 'break;' '}' '}' –
你想要什么? Wifi信号?没有酒吧? – KiranJasvanee
没有wifi信号的活动栏?或SignalMode? – KiranJasvanee
@KiranJasvanee我想要网络类型3g,4g,Wifi,LTE .. – Ashish