Files
yinmeng-ios-store/yinmeng-ios/DingDangApp/YingMeng/DDBaseCompilation/DDBaseTool/DDThirdTool/DDRechability/DDReachability.h
2023-12-11 19:04:30 -08:00

81 lines
2.2 KiB
Objective-C

//
// DDReachability.h
// DingDangApp
//
// Created by 触海 on 2023/12/11.
//
#import <Foundation/Foundation.h>
#import <SystemConfiguration/SystemConfiguration.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <netinet6/in6.h>
#import <arpa/inet.h>
#import <ifaddrs.h>
#import <netdb.h>
NS_ASSUME_NONNULL_BEGIN
#if OS_OBJECT_USE_OBJC
#define NEEDS_DISPATCH_RETAIN_RELEASE 0
#else
#define NEEDS_DISPATCH_RETAIN_RELEASE 1
#endif
#ifndef NS_ENUM
#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
#endif
extern NSString *const kDDReachabilityChangedNotification;
typedef NS_ENUM(NSInteger, DDNetworkStatus) {
// Apple NetworkStatus Compatible Names.
DDNotReachable = 0,
DDReachableViaWiFi = 2,
DDReachableViaWWAN = 1
};
@class DDReachability;
typedef void (^DDNetworkReachable)(DDReachability * reachability);
typedef void (^DDNetworkUnreachable)(DDReachability * reachability);
@interface DDReachability : NSObject
@property (nonatomic, copy) DDNetworkReachable reachableBlock;
@property (nonatomic, copy) DDNetworkUnreachable unreachableBlock;
@property (nonatomic, assign) BOOL reachableOnWWAN;
+ (DDReachability*)DD_ReachabilityWithHostname:(NSString*)hostname;
+ (DDReachability*)DD_ReachabilityForInternetConnection;
+ (DDReachability*)DD_ReachabilityWithAddress:(const struct sockaddr_in*)hostAddress;
+ (DDReachability*)DD_ReachabilityForLocalWiFi;
- (DDReachability *)initWithReachabilityRef:(SCNetworkReachabilityRef)ref;
- (BOOL)dd_startNotifier;
- (void)dd_stopNotifier;
- (BOOL)dd_isReachable;
- (BOOL)dd_isReachableViaWWAN;
- (BOOL)dd_isReachableViaWiFi;
// WWAN may be available, but not active until a connection has been established.
// WiFi may require a connection for VPN on Demand.
- (BOOL)dd_isConnectionRequired; // Identical DDG variant.
- (BOOL)dd_connectionRequired; // Apple's routine.
// Dynamic, on demand connection?
- (BOOL)dd_isConnectionOnDemand;
// Is user intervention required?
- (BOOL)dd_isInterventionRequired;
- (NetworkStatus)dd_currentReachabilityStatus;
- (SCNetworkReachabilityFlags)dd_reachabilityFlags;
- (NSString*)dd_currentReachabilityString;
- (NSString*)dd_currentReachabilityFlags;
@end
NS_ASSUME_NONNULL_END