iOS 小tips

1.主线程执行代码

dispatch_async(dispatch_get_main_queue(), ^{

           [application registerForRemoteNotifications];

        });

2.获取网络状态

方法1:-(NSString*)getNetWorkStates{

    UIApplication *app = [UIApplication sharedApplication];

    NSArray*children;

    // 不能用 [[self deviceVersion] isEqualToString:@"iPhone X"] 来判断,因为模拟器不会返回 iPhone X

    if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {//判断iPhone X

        children = [[[[appvalueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];

    }else{

        children = [[[appvalueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];

    }

    //NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];

    NSString *state = [[NSString alloc]init];

    intnetType = 0;

    //获取到网络返回码

    for(id child in children) {

        if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {

            //获取到状态栏

            netType = [[child valueForKeyPath:@"dataNetworkType"] intValue];

            switch(netType) {

                case0:

                    state=@"网络信号差";

                    //state = @"无网络";  GPRS网络状态下也显示无网络

                    //无网模式

                    break;

                case1:

                    state=@"网络信号差";

                    //state = @"2G";        E网络状态属于2G

                    break;

                case2:

                    state =@"3G";

                    break;

                case3:

                    state =@"4G";

                    break;

                case5:

                    state =@"WIFI";

                    break;

                default:

                    break;

            }

        }

    }

    //根据状态选择

    return state;

}

方法2:-(BOOL)checkNetStatus

{

    NetworkStatus networkStatus = [Reachability reachabilityForInternetConnection].currentReachabilityStatus;

    if(networkStatus ==NotReachable)

    {

        NSLog(@"无网络连接");

        [SVProgressHUD showErrorWithStatus:@"当前网络不可用,请检查您的网络设置"];

        returnNO;

    }

    else

    {

        NSLog(@"有网络连接");

        if([[self getNetWorkStates] isEqualToString:@"网络信号差"])

        {

            [SVProgressHUD showErrorWithStatus:@"当前网络信号不好,可能会影响您的用户体验"];

        }

        return YES;

    }

}

3.iOS13之后苹果上架不支持uiwebview了,需要换成wkwebview

4.设置代码只能在模拟器上执行#if TARGET_IPHONE_SIMULATOR   #endif

你可能感兴趣的:(iOS 小tips)