iOS检测是否开启飞行模式

某恶心需求:不根据网络状态,纯粹根据statusBar判断飞行模式是否开启。
通过Hack StatusBar的层级,判断是否有“✈️”的标志,以此来判断是否打开了飞行模式。
慎用此方法,无法保证以后iOS系统更新或出新机型后,是否会造成crash!!!

    //iPhone X
    if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
        children = [[[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
        for (UIView *view in children) {
            for (id child in view.subviews) {
                if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarImageView")]) {
                    state = @"airPlane";
                }
            }
        }
    } else { //其他机型
        children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
        for (id child in children) {
            if ([child isKindOfClass:NSClassFromString(@"UIStatusBarAirplaneModeItemView")]) {
                state = @"airPlane";
            }
        }
    }

你可能感兴趣的:(iOS检测是否开启飞行模式)