首页 > 解决方案 > 如何在 ios13 上使用 [[UIApplication sharedApplication] valueForKey:@"statusBar"] 获取 wifi 信号强度?

问题描述

由于未捕获的异常 'NSInternalInconsistencyException' 导致 [[UIApplication sharedApplication] valueForKey:@"statusBar"] 行发生崩溃,原因:'在 UIApplication 上调用 -statusBar 或 -statusBarWindow 的应用程序。必须更改此代码,因为不再有状态栏或状态栏窗口。

但没有提到如何获取 wifi 信号强度或其他状态栏信息,如网吧。如果有任何其他 API 或方法来获取这些信息,有人可以建议我吗?

标签: crashwifistatusbarios13

解决方案


    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(@"%@",[[[[_statusBar valueForKey:@"_statusBar"] valueForKey:@"_currentAggregatedData"] valueForKey:@"_wifiEntry"] valueForKey:@"displayValue"]);
        }
    }

推荐阅读