//
//  LTNetStatus.h
//  LTUnionSDK
//
//  Created by 孙泉 on 2017/6/30.
//  Copyright © 2017年 孙泉. All rights reserved.
//

#import <Foundation/Foundation.h>

#import <SystemConfiguration/SystemConfiguration.h>
#import <CoreFoundation/CoreFoundation.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <UIKit/UIKit.h>

/**
 网络状态枚举
 
 - LTNetStatusNone: 无网络
 - LTNetStatusViaWiFi: 通过WiFi
 - LTNetStatusVia2G: 通过2G
 - LTNetStatusVia3G: 通过3G
 - LTNetStatusVia4G: 通过4G
 - LTNetStatusViaWWAN: 其他移动网络
 */
typedef NS_ENUM(NSUInteger, LTNetStatusType)
{
    LTNetStatusNone,
    LTNetStatusViaWiFi,
    LTNetStatusVia2G,
    LTNetStatusVia3G,
    LTNetStatusVia4G,
    LTNetStatusViaWWAN
};

typedef void(^LTNetStatusBlock)(LTNetStatusType type);

@interface LTNetStatus : NSObject

/**
 单例方法

 @return 单例对象
 */
+ (instancetype)sharedInstance;

/**
 检查当前网络状态
 
 @return 当前网络状态
 */
+ (LTNetStatusType)currentNetStatus;

/**
 获取网络标志对应的网络状态

 @param flags 网络标志
 @return 对应的网络状态
 */
- (LTNetStatusType)networkStatusForFlags:(SCNetworkReachabilityFlags)flags;

/**
 监听网络状态改变

 @param block 网络状态改变回调
 */
+ (void)observeNetStatus:(LTNetStatusBlock)block;

@end
