Renaming AFNetworkReachabilityStatus and changing to bitmask
Fixing AFReachabilityCallback to give correct WiFi reachability value Minor formatting and refactoring
This commit is contained in:
parent
be19b45c13
commit
71d6af9e5c
2 changed files with 48 additions and 33 deletions
|
|
@ -38,19 +38,19 @@ extern NSString * const AFNetworkingReachabilityDidChangeNotification;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Enum representing the reachability states to the `baseURL` of the `AFHTTPClient.`
|
Specifies network reachability of the client to its `baseURL` domain.
|
||||||
*/
|
*/
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
typedef enum{
|
typedef enum {
|
||||||
AFReachabilityStatusUnknown = 0,
|
AFNetworkReachabilityStatusUnknown = -1,
|
||||||
AFReachabilityStatusNotReachable,
|
AFNetworkReachabilityStatusNotReachable = 0,
|
||||||
AFReachabilityStatusReachableViaWWAN,
|
AFNetworkReachabilityStatusReachableViaWWAN = 1 << 0,
|
||||||
AFReachabilityStatusReachableViaWiFi,
|
AFNetworkReachabilityStatusReachableViaWiFi = 1 << 1,
|
||||||
}AFReachabilityStatus;
|
} AFNetworkReachabilityStatus;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Method used to encode parameters into request body.
|
Specifies the method used to encode parameters into request body.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AFFormURLParameterEncoding,
|
AFFormURLParameterEncoding,
|
||||||
|
|
@ -165,7 +165,7 @@ extern NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *paramete
|
||||||
@warning This property requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import <SystemConfiguration/SystemConfiguration.h>` to the header prefix of the project (Prefix.pch).
|
@warning This property requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import <SystemConfiguration/SystemConfiguration.h>` to the header prefix of the project (Prefix.pch).
|
||||||
*/
|
*/
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
@property (readonly, nonatomic) AFReachabilityStatus reachabilityStatus;
|
@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
///---------------------------------------------
|
///---------------------------------------------
|
||||||
|
|
@ -204,7 +204,7 @@ extern NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *paramete
|
||||||
@warning This method requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import <SystemConfiguration/SystemConfiguration.h>` to the header prefix of the project (Prefix.pch).
|
@warning This method requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import <SystemConfiguration/SystemConfiguration.h>` to the header prefix of the project (Prefix.pch).
|
||||||
*/
|
*/
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
- (void)setReachabilityStatusChangeBlock:(void (^)(AFReachabilityStatus reachabilityStatus))block;
|
- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
///-------------------------------
|
///-------------------------------
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,11 @@
|
||||||
|
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
#import <SystemConfiguration/SystemConfiguration.h>
|
#import <SystemConfiguration/SystemConfiguration.h>
|
||||||
|
#import <netinet/in.h>
|
||||||
|
#import <netinet6/in6.h>
|
||||||
|
#import <arpa/inet.h>
|
||||||
|
#import <ifaddrs.h>
|
||||||
|
#import <netdb.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change";
|
NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change";
|
||||||
|
|
@ -57,7 +62,7 @@ static NSString * const kAFMultipartFormBoundary = @"Boundary+0xAbCdEfGbOuNdArY"
|
||||||
|
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
typedef SCNetworkReachabilityRef AFNetworkReachabilityRef;
|
typedef SCNetworkReachabilityRef AFNetworkReachabilityRef;
|
||||||
typedef void (^AFNetworkReachabilityStatusBlock)(AFReachabilityStatus reachabilityStatus);
|
typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status);
|
||||||
#else
|
#else
|
||||||
typedef id AFNetworkReachabilityRef;
|
typedef id AFNetworkReachabilityRef;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -196,6 +201,7 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) {
|
||||||
@property (readwrite, nonatomic, retain) NSOperationQueue *operationQueue;
|
@property (readwrite, nonatomic, retain) NSOperationQueue *operationQueue;
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
@property (readwrite, nonatomic, assign) AFNetworkReachabilityRef networkReachability;
|
@property (readwrite, nonatomic, assign) AFNetworkReachabilityRef networkReachability;
|
||||||
|
@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus;
|
||||||
@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock;
|
@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -214,8 +220,8 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) {
|
||||||
@synthesize operationQueue = _operationQueue;
|
@synthesize operationQueue = _operationQueue;
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
@synthesize networkReachability = _networkReachability;
|
@synthesize networkReachability = _networkReachability;
|
||||||
|
@synthesize networkReachabilityStatus = _networkReachabilityStatus;
|
||||||
@synthesize networkReachabilityStatusBlock = _networkReachabilityStatusBlock;
|
@synthesize networkReachabilityStatusBlock = _networkReachabilityStatusBlock;
|
||||||
@synthesize reachabilityStatus = _reachabilityStatus;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+ (AFHTTPClient *)clientWithBaseURL:(NSURL *)url {
|
+ (AFHTTPClient *)clientWithBaseURL:(NSURL *)url {
|
||||||
|
|
@ -252,6 +258,7 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _SYSTEMCONFIGURATION_H
|
#ifdef _SYSTEMCONFIGURATION_H
|
||||||
|
self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown;
|
||||||
[self startMonitoringNetworkReachability];
|
[self startMonitoringNetworkReachability];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -287,22 +294,28 @@ static void AFReachabilityCallback(SCNetworkReachabilityRef __unused target, SCN
|
||||||
BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0);
|
BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0);
|
||||||
BOOL isNetworkReachable = (isReachable && !needsConnection);
|
BOOL isNetworkReachable = (isReachable && !needsConnection);
|
||||||
|
|
||||||
AFReachabilityStatus status = AFReachabilityStatusUnknown;
|
AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusNotReachable;
|
||||||
if(isNetworkReachable == NO){
|
if(isNetworkReachable == NO) {
|
||||||
status = AFReachabilityStatusNotReachable;
|
status = AFNetworkReachabilityStatusNotReachable;
|
||||||
|
} else {
|
||||||
|
#if TARGET_OS_IPHONE
|
||||||
|
if((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0){
|
||||||
|
status |= AFNetworkReachabilityStatusReachableViaWWAN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct sockaddr_in localWiFiAddress;
|
||||||
|
memset(&localWiFiAddress, '\0', sizeof(localWiFiAddress));
|
||||||
|
localWiFiAddress.sin_len = sizeof(localWiFiAddress);
|
||||||
|
localWiFiAddress.sin_family = AF_INET;
|
||||||
|
localWiFiAddress.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM);
|
||||||
|
|
||||||
|
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)&localWiFiAddress);
|
||||||
|
if (reachability != NULL) {
|
||||||
|
status |= AFNetworkReachabilityStatusReachableViaWiFi;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#if TARGET_OS_IPHONE
|
|
||||||
else if((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0){
|
|
||||||
status = AFReachabilityStatusReachableViaWWAN;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
status = AFReachabilityStatusReachableViaWiFi;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
else {
|
|
||||||
status = AFReachabilityStatusReachableViaWiFi;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
AFNetworkReachabilityStatusBlock block = (AFNetworkReachabilityStatusBlock)info;
|
AFNetworkReachabilityStatusBlock block = (AFNetworkReachabilityStatusBlock)info;
|
||||||
if (block) {
|
if (block) {
|
||||||
block(status);
|
block(status);
|
||||||
|
|
@ -326,13 +339,15 @@ static void AFReachabilityCallback(SCNetworkReachabilityRef __unused target, SCN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setReachabilityStatusChangeBlock:(void (^)(AFReachabilityStatus reachabilityStatus))block {
|
- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block {
|
||||||
void (^reachabilityCallback)(AFReachabilityStatus reachabilityStatus) = ^(AFReachabilityStatus reachabilityStatus){
|
AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status){
|
||||||
_reachabilityStatus = reachabilityStatus;
|
self.networkReachabilityStatus = status;
|
||||||
if(block)
|
if (block) {
|
||||||
block(reachabilityStatus);
|
block(status);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
self.networkReachabilityStatusBlock = reachabilityCallback;
|
|
||||||
|
self.networkReachabilityStatusBlock = callback;
|
||||||
[self startMonitoringNetworkReachability];
|
[self startMonitoringNetworkReachability];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue