iOS之Reachability和AFN判断网络连接状态

1.Reachability
// 监听网络状态改变的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

// 创建Reachability
self.conn = [Reachability reachabilityForInternetConnection];
// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[self.conn startNotifier];

// 处理网络状态改变
- (void)networkStateChange
{
    // 1.检测wifi状态
    Reachability *wifi = [Reachability reachabilityForLocalWiFi];

    // 2.检测手机是否能上网络(WIFI\3G\2.5G)
    Reachability *conn = [Reachability reachabilityForInternetConnection];

    // 3.判断网络状态
    if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
        NSLog(@"有wifi");
    } else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
        NSLog(@"使用手机自带网络进行上网");
    } else { // 没有网络
        NSLog(@"没有网络");
    }
}

2.AFN
// 1.获得网络监控的管理者
AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];

// 2.设置网络状态改变后的处理
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    // 当网络状态改变了, 就会调用这个block
    switch (status) {
        case AFNetworkReachabilityStatusUnknown: // 未知网络
            NSLog(@"未知网络");
            break;

        case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)
            NSLog(@"没有网络(断网)");
            break;

        case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络
            NSLog(@"手机自带网络");
            break;

        case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI
            NSLog(@"WIFI");
            break;
    }
}];

// 3.开始监控
[mgr startMonitoring];
时间: 2024-10-09 07:27:08

iOS之Reachability和AFN判断网络连接状态的相关文章

iOS开发——Reachability和AFNetworking判断网络连接状态

一.Reachability // 监听网络状态改变的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil]; // 创建Reachability self.conn = [Reachability reachabilityForInternetConnecti

判断网络连接状态

/** * 判断网络连接状态 */ public static boolean isNetworkAvailable(Context context) { ConnectivityManager cwjManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = cwjManager.getActiveNetworkInfo(); if (in

iOS 判断网络连接状态的几种方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #801b80 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Comic Sans MS"; color: #801b80 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; col

Android判断网络连接状态

需要相关权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/

android判断网络连接状态、联网类型、运营商

/** * 获取上网方式 * * @param mContext * @return */ public static String getNetType(Context mContext) { String netType = ""; ConnectivityManager connectionManager = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); Networ

android设备判断网络连接状态

android开发中,在做网络请求前判断当前网络连接状态有时很有必要.本文将介绍如何获取android设备当前网络连接状态! 所需权限(AndroidManifest.xml文件中添加): <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> Java代码(MainActivity.java文件) package com.example.androidtest; import a

android 获取并判断网络连接状态

/*添加权限*/<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>/*在需要判断网络的地方添加和调用以下方法*/ public boolean isNetworkAvilable(Context context){ ConnectivityManager connectivityManager = (ConnectivityManag

广播接受者判断网络连接状态

需求:网络连接分三种状态:无网络.移动数据.WIFI public class ConnectionChangeReceiver extends BroadcastReceiver { private AlertDialog alertDialog; //标记的作用是为了避免对话框弹出多次 private boolean isConnect = false;//标记是否连接 private boolean isGPRS = false;//标记连接方式是移动网络 private boolean

iOS 判断网络连接状态

typedef enum { NETWORK_TYPE_NONE= 0, NETWORK_TYPE_2G= 1, NETWORK_TYPE_3G= 2, NETWORK_TYPE_4G= 3, NETWORK_TYPE_5G= 4,//  5G目前为猜测结果 NETWORK_TYPE_WIFI= 5, }NETWORK_TYPE; - (NETWORK_TYPE)getNetworkTypeFromStatusBar { UIApplication *app = [UIApplication s