this code must be changed as there‘s no longer a status bar or status bar window.

ModalName: 文件日志, ErrorLevel: Error, Function: UncaughtExceptionHandler, Line: 227, Format: <- 2021-04-19 15:59:36 ->[ Uncaught Exception ]
Name: NSInternalInconsistencyException, Reason: App called -statusBar or -statusBarWindow on UIApplication: this code must be changed as there’s no longer a status bar or status bar window. Use the statusBarManager object on the window scene instead.
[ Fe Symbols Start ]
0 CoreFoundation 0x0000000187881880 727F2644-EB4E-3D57-BC2E-E6803BA92366 + 1202304
1 libobjc.A.dylib 0x000000019c89ac50 objc_exception_throw + 60
2 CoreFoundation 0x0000000187787000 727F2644-EB4E-3D57-BC2E-E6803BA92366 + 176128
3 Foundation 0x0000000188b1b91c 7698BF3E-0CF6-31C0-85E9-562714F01276 + 518428
4 UIKitCore 0x000000018a23e068 8518EAE3-832B-3FF0-9FA5-9DBE3041F26C + 12386408
5 UIKitCore 0x000000018a23e55c 8518EAE3-832B-3FF0-9FA5-9DBE3041F26C + 12387676
6 Foundation 0x0000000188aa8f14 7698BF3E-0CF6-31C0-85E9-562714F01276 + 48916
7 稚美家长端 0x0000000104d56000 -[BITSingleObject getNetWorkStatesWithStatus:] + 248
8 稚美家长端 0x0000000104c0c3ec __38-[PPBizModule monitoringNetworkStatus]_block_invoke + 344
9 稚美家长端 0x0000000104ca1600 __47-[AFNetworkReachabilityManager startMonitoring]_block_invoke + 148
10 稚美家长端 0x0000000104ca1cc0 __AFPostReachabilityStatusChange_block_invoke + 80
11 libdispatch.dylib 0x0000000105f9bbcc _dispatch_call_block_and_release + 32
12 libdispatch.dylib 0x0000000105f9d6c0 _dispatch_client_callout + 20
13 libdispatch.dylib 0x0000000105facf34 _dispatch_main_queue_callback_4CF + 1000
14 CoreFoundation 0x00000001877fd11c 727F2644-EB4E-3D57-BC2E-E6803BA92366 + 659740
15 CoreFoundation 0x00000001877f7120 727F2644-EB4E-3D57-BC2E-E6803BA92366 + 635168
16 CoreFoundation 0x00000001877f621c CFRunLoopRunSpecific + 600
17 GraphicsServices 0x000000019f3c0784 GSEventRunModal + 164
18 UIKitCore 0x000000018a236ee8 8518EAE3-832B-3FF0-9FA5-9DBE3041F26C + 12357352
19 UIKitCore 0x000000018a23c75c UIApplicationMain + 168
20 稚美家长端 0x0000000104bea330 main + 140
21 libdyld.dylib 0x00000001874b66b0 21B19919-1334-38BC-B233-896E929945E0 + 5808
[ Fe Symbols End ]

.
原因分析:
// iOS 13 弃用keyWindow属性 从所有windowl数组中取
代码修改例子:

//请注意:该函数只有在显示状态栏的页面才能获取到2G/3G/4G网络
- (BGNetworkReachabilityStatus)getNetWorkStatesWithStatus : (AFNetworkReachabilityStatus)status
{
    if(AFNetworkReachabilityStatusUnknown == status)
    {
        return BGNetworkReachabilityStatusUnknown;
    }
    else if(AFNetworkReachabilityStatusNotReachable == status)
    {
        return BGNetworkReachabilityStatusNotReachable;
    }
    else if(AFNetworkReachabilityStatusReachableViaWiFi == status)
    {
        return BGNetworkReachabilityStatusReachableViaWiFi;
    }else if (@available(iOS 12.1, *))
    {
        return  [self getNetType];
    }
//    if(LL_iPhoneX)
//    {
//        return BGNetworkReachabilityStatusReachableViaWWAN;
//    }
    UIApplication *app = [UIApplication sharedApplication];
//    NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
    NSArray *children;
    // 不能用 [[self deviceVersion] isEqualToString:@"iPhone X"] 来判断,因为模拟器不会返回 iPhone X
//    NSLog(@"%@   %@", [[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"], [[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar.currentData"]);
    if (@available(iOS 13.0, *))
    {
        return BGNetworkReachabilityStatusReachableViaWWAN;
    }
    else
    {
        if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
            children = [[[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
        }
        else
        {
            children = [[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
            
    //        if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
    //            id curData = [statusBar valueForKeyPath:@"statusBar.currentData"];
    //            BOOL wifiEnable = [[curData valueForKeyPath:@"_wifiEntry.isEnabled"] boolValue];
    //            BOOL cellEnable = [[curData valueForKeyPath:@"_cellularEntry.isEnabled"] boolValue];
    //            // iPhone X上通过StatusBar只能获取到网络是WiFi还是蜂窝网
    //            // 当网络为蜂窝网的时候,无法获取到具体的网络状态
    //            if (wifiEnable) {
    //                states = @"WiFi";
    //            } else if (cellEnable) {
    //                states = @"Cellular";
    //            }

        }
        int netType = 0;
        //获取到网络返回码
        for (id child in children) {
            if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
                //获取到状态栏
                netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];
                
                switch (netType) {
                    case 0:
                    {
                        NSLog(@"无网络");
                        //无网模式
                        return BGNetworkReachabilityStatusNotReachable;
                    }
                        break;
                    case 1:
                    {
                        NSLog(@"2G");
                        return BGNetworkReachabilityStatusReachableViaWWAN2G;
                    }
                        break;
                    case 2:
                    {
                        NSLog(@"3G");
                        return BGNetworkReachabilityStatusReachableViaWWAN3G;
                    }
                        break;
                    case 3:
                    {
                        NSLog(@"4G");
                        return BGNetworkReachabilityStatusReachableViaWWAN4G;
                    }
                    case 4:
                    {
                        NSLog(@"5G");
                        return BGNetworkReachabilityStatusReachableViaWWAN5G;
                    }
                        break;
                    case 5:
                    {
                        NSLog(@"wifi");
                        return BGNetworkReachabilityStatusReachableViaWWAN5G;
                    }
                        break;
                    default:
                        break;
                }
            }
            //根据状态选择
            return BGNetworkReachabilityStatusReachableViaWWAN;
        }
    }
  
    return BGNetworkReachabilityStatusReachableViaWWAN;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值