Crash 如何在ios13上使用[[UIApplication sharedApplication]valueForKey:@“statusBar”获取wifi信号强度?

Crash 如何在ios13上使用[[UIApplication sharedApplication]valueForKey:@“statusBar”获取wifi信号强度?,crash,wifi,statusbar,ios13,Crash,Wifi,Statusbar,Ios13,行[[UIApplication sharedApplication]valueForKey:@“statusBar”]上发生崩溃,原因是未捕获异常“NSInternalInconsistenceException”,原因是:应用程序调用了UIApplication上的-statusBar或-statusBarWindow。此代码必须更改,因为不再有状态栏或状态栏窗口 但没有提到如何获取wifi信号强度或其他状态栏信息,如网吧。 有人能告诉我是否有其他API或方法可以获取这些信息吗?UIStat

行[[UIApplication sharedApplication]valueForKey:@“statusBar”]上发生崩溃,原因是未捕获异常“NSInternalInconsistenceException”,原因是:应用程序调用了UIApplication上的-statusBar或-statusBarWindow。此代码必须更改,因为不再有状态栏或状态栏窗口

但没有提到如何获取wifi信号强度或其他状态栏信息,如网吧。 有人能告诉我是否有其他API或方法可以获取这些信息吗?

UIStatusBarManager*statusBarManager=[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
    UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
    if ([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]) {
        UIView *_localStatusBar = [statusBarManager performSelector:@selector(createLocalStatusBar)];
        if ([_localStatusBar respondsToSelector:@selector(statusBar)]) {
            _statusBar = [_localStatusBar performSelector:@selector(statusBar)];
            NSLog(@"
    id statusBar;
    if (@available(iOS 13.0, *)) {
        UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
        if ([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]) {
            UIView *localStatusBar = [statusBarManager performSelector:@selector(createLocalStatusBar)];
            if ([localStatusBar respondsToSelector:@selector(statusBar)]) {
                statusBar = [localStatusBar performSelector:@selector(statusBar)];
            }
        }

        if (statusBar) {
            id currentData = [[statusBar valueForKeyPath:@"_statusBar"] valueForKeyPath:@"currentData"];
            id wifiEntry = [currentData valueForKeyPath:@"wifiEntry"];
            id cellularEntry = [currentData valueForKeyPath:@"cellularEntry"];
            if (wifiEntry && [[wifiEntry valueForKeyPath:@"isEnabled"] boolValue]) {
                signalStrength = [[wifiEntry valueForKeyPath:@"displayValue"] intValue];
                signalStrength = signalStrength == 3 ? 4 : signalStrength;
            } else if (cellularEntry && [[cellularEntry valueForKeyPath:@"isEnabled"] boolValue]) {
                signalStrength = [[cellularEntry valueForKey:@"displayValue"] intValue];
            }
        }
        return signalStrength;
    }
if([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]){ UIView*_localStatusBar=[statusBarManager性能选择器:@selector(createLocalStatusBar)]; if([[u localStatusBar respondsToSelector:@selector(statusBar)]){ _statusBar=[\u localStatusBar性能选择器:@selector(statusBar)];
NSLog(@“代码,如[[UIApplication sharedApplication]valueForKey:@“statusBar”]
从来都不是有效的。永远不要试图挖掘类的私有API。它永远不会随着时间的推移而结束。你知道有什么替代方法可以获得iPhone状态栏上显示的所有信息吗?嗨,请阅读stackoverflow的指南并修改你的答案。因为你还需要解释答案,只发布代码不是一个好方法。H以下是一些指导原则。提供的答案可能是正确的,但可以从解释中获益。仅代码答案不被视为“好”答案。