BBANetworkReachablityManager.h 2.73 KB
//
//  BBANetworkReachablityManager.h
//  BBAAPIRequest
//
//  Created by liumuye on 2021/6/20.
//
//  Copyright © 2021年 baidu. All rights reserved.

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/// 联网类型
typedef NS_ENUM(NSInteger, BBANetworkConnectType) {
    BBANetworkConnectType_None = -1,
    BBANetworkConnectType_Unknown,
    BBANetworkConnectType_WiFi,
    BBANetworkConnectType_2G,
    BBANetworkConnectType_3G,
    BBANetworkConnectType_4G,
    BBANetworkConnectType_5G
};

/// 联网类型(子类型)
typedef NS_ENUM(NSInteger, BBANetworkConnectSubType) {
    BBANetworkConnectSubType_None = -1,
    BBANetworkConnectSubType_Unknown,
    BBANetworkConnectSubType_WiFi,
    BBANetworkConnectSubType_GPRS,
    BBANetworkConnectSubType_Edge,
    BBANetworkConnectSubType_WCDMA,
    BBANetworkConnectSubType_HSDPA,
    BBANetworkConnectSubType_HSUPA,
    BBANetworkConnectSubType_CDMA1x,
    BBANetworkConnectSubType_CDMAEVDORev0,
    BBANetworkConnectSubType_CDMAEVDORevA,
    BBANetworkConnectSubType_CDMAEVDORevB,
    BBANetworkConnectSubType_eHRPD,
    BBANetworkConnectSubType_LTE,
    BBANetworkConnectSubType_NRNSA,
    BBANetworkConnectSubType_NR
};

/// 用户授予的网络权限
typedef NS_ENUM(NSInteger, BBANetworkPermission) {
    BBANetworkPermission_Unknown,
    BBANetworkPermission_Restricted,
    BBANetworkPermission_NotRestricted
};

/// 设备网络连通性管理
/// 1. 查看网络制式&网卡
/// 2. 联网&网络切换监听 (待建设, use AFNetworkReachabilityManager temporarily)
/// 3. 网络质量 (待建设, use BBANetworkQualityStatusManager temporarily)
/// 4. 出口IP
@interface BBANetworkReachablityManager : NSObject

/// 当前联网状态
@property (nonatomic, class, assign, readonly) BBANetworkConnectType connectType;

/// 当前联网状态描述
@property (nonatomic, class, copy,   readonly) NSString *connectTypeStr;

/// 当前用户授权的网络权限状态
@property (nonatomic, class, assign, readonly) BBANetworkPermission permissionState;

/// 当前是否有使用VPN
@property (nonatomic, class, assign, readonly) BOOL vpnConnected;

/// 用户出口IP
@property (nonatomic, class, copy,   readonly) NSString *clientIP;

#pragma mark - Mobile

/// 移动网卡是否存在且连接状态
@property (nonatomic, class, assign, readonly) BOOL mobileInterfaceConnected;

/// 移动网卡连接类型
@property (nonatomic, class, assign, readonly) BBANetworkConnectType mobileInterfaceConnectType;

/// 移动网卡连接制式
@property (nonatomic, class, assign, readonly) BBANetworkConnectSubType mobileInterfaceConnectSubType;

#pragma mark - WiFi

/// WiFi网卡是否存在且连接状态
@property (nonatomic, class, assign, readonly) BOOL wifiInterfaceConnected;

@end

NS_ASSUME_NONNULL_END