iOS 检测网络连接

最近遇到需要检测网络状况的情况,在YYkit和AF里面有相关代码,供查阅。



//

//  YYReachability.h

//  YYKit <https://github.com/ibireme/YYKit>

//

//  Created by ibireme on 15/2/6.

//  Copyright (c) 2015 ibireme.

//

//  This source code is licensed under the MIT-style license found in the

//  LICENSE file in the root directory of this source tree.

//


#import <Foundation/Foundation.h>

#import <SystemConfiguration/SystemConfiguration.h>

#import <netinet/in.h>


typedef NS_ENUM(NSUInteger, YYReachabilityStatus) {

    YYReachabilityStatusNone  = 0, ///< Not Reachable

    YYReachabilityStatusWWAN  = 1, ///< Reachable via WWAN (2G/3G/4G)

    YYReachabilityStatusWiFi  = 2, ///< Reachable via WiFi

};


typedef NS_ENUM(NSUInteger, YYReachabilityWWANStatus) {

    YYReachabilityWWANStatusNone  = 0, ///< Not Reachable vis WWAN

    YYReachabilityWWANStatus2G = 2, ///< Reachable via 2G (GPRS/EDGE)       10~100Kbps

    YYReachabilityWWANStatus3G = 3, ///< Reachable via 3G (WCDMA/HSDPA/...) 1~10Mbps

    YYReachabilityWWANStatus4G = 4, ///< Reachable via 4G (eHRPD/LTE)       100Mbps

};



/**

 `YYReachability` can used to monitor the network status of an iOS device.

 */

@interface YYReachability : NSObject


@property (nonatomic, assign, readonly) SCNetworkReachabilityFlags flags;                           ///< Current flags.

@property (nonatomic, assign, readonly) YYReachabilityStatus status;                                ///< Current status.

@property (nonatomic, assign, readonly) YYReachabilityWWANStatus wwanStatus NS_AVAILABLE_IOS(7_0);  ///< Current WWAN status.

@property (nonatomic, assign, readonly, getter=isReachable) BOOL reachable;


/// Notify block which will be called on main thread when network changed.

@property (nonatomic, copy) void (^notifyBlock)(YYReachability *reachability);


+ (instancetype)reachability;

+ (instancetype)reachabilityForLocalWifi;

+ (instancetype)reachabilityWithHostname:(NSString *)hostname;

+ (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress;


@end


typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {

    AFNetworkReachabilityStatusUnknown          = -1,

    AFNetworkReachabilityStatusNotReachable     = 0,

    AFNetworkReachabilityStatusReachableViaWWAN = 1,

    AFNetworkReachabilityStatusReachableViaWiFi = 2,

};


NS_ASSUME_NONNULL_BEGIN



你可能感兴趣的:(ios)