diff --git a/AFNetworking/AFNetworkReachabilityManager.h b/AFNetworking/AFNetworkReachabilityManager.h index 6f7594d..ad6d8e1 100644 --- a/AFNetworking/AFNetworkReachabilityManager.h +++ b/AFNetworking/AFNetworkReachabilityManager.h @@ -37,75 +37,92 @@ typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { }; /** - + AFNetworkReachabilityManager monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. */ @interface AFNetworkReachabilityManager : NSObject /** - + The current network reachability status. */ @property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; - /** - - */ -@property (readonly, nonatomic, assign) SCNetworkReachabilityFlags networkReachabilityFlags; - -/** - + Whether or not the network is currently reachable. */ @property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; /** - + Whether or not the network is currently reachable via WWAN. */ @property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; /** - + Whether or not the network is currently reachable via WiFi. */ @property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; -/// +///--------------------- +/// @name Initialization +///--------------------- /** - + Returns the shared network reachability manager. */ + (instancetype)sharedManager; /** + Creates and returns a network reachability manager for the specified domain. + @param domain The domain used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified domain. */ + (instancetype)managerForDomain:(NSString *)domain; /** - + Creates and returns a network reachability manager for the socket address. + + @param address The socket address used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified socket address. */ + (instancetype)managerForAddress:(const struct sockaddr_in *)address; /** + Initializes an instance of a network reachability manager from the specified reachability object. + @param reachability The reachability object to monitor. + + @return An initialized network reachability manager, actively monitoring the specified reachability. */ - (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability; -/// +///-------------------------------------------------- +/// @name Starting & Stopping Reachability Monitoring +///-------------------------------------------------- /** - + Starts monitoring for changes in network reachability status. */ - (void)startMonitoring; /** - + Stops monitoring for changes in network reachability status. */ - (void)stopMonitoring; -/// +///------------------------------------------------- +/// @name Getting Localized Reachability Description +///------------------------------------------------- +/** + Returns a localized string representation of the current network reachability status. + */ - (NSString *)localizedNetworkReachabilityStatusString; -/// +///--------------------------------------------------- +/// @name Setting Network Reachability Change Callback +///--------------------------------------------------- /** Sets a callback to be executed when the network availability of the `baseURL` host changes. @@ -165,3 +182,12 @@ typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { */ extern NSString * const AFNetworkingReachabilityDidChangeNotification; extern NSString * const AFNetworkingReachabilityNotificationStatusItem; + +///-------------------- +/// @name Functions +///-------------------- + +/** + Returns a localized string representation of an `AFNetworkReachabilityStatus` value. + */ +extern NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status); diff --git a/AFNetworking/AFNetworkReachabilityManager.m b/AFNetworking/AFNetworkReachabilityManager.m index d59f75a..b520374 100644 --- a/AFNetworking/AFNetworkReachabilityManager.m +++ b/AFNetworking/AFNetworkReachabilityManager.m @@ -27,6 +27,20 @@ NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworking typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); +NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status) { + switch (status) { + case AFNetworkReachabilityStatusNotReachable: + return NSLocalizedStringFromTable(@"Not Reachable", @"AFNetworking", nil); + case AFNetworkReachabilityStatusReachableViaWWAN: + return NSLocalizedStringFromTable(@"Reachable via WWAN", @"AFNetworking", nil); + case AFNetworkReachabilityStatusReachableViaWiFi: + return NSLocalizedStringFromTable(@"Reachable via WiFi", @"AFNetworking", nil); + case AFNetworkReachabilityStatusUnknown: + default: + return NSLocalizedStringFromTable(@"Unknown", @"AFNetworking", nil); + } +} + static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetworkReachabilityFlags flags) { BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0); BOOL canConnectionAutomatically = ((flags & kSCNetworkReachabilityFlagsTransientConnection) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0); @@ -192,17 +206,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { #pragma mark - - (NSString *)localizedNetworkReachabilityStatusString { - switch (self.networkReachabilityStatus) { - case AFNetworkReachabilityStatusNotReachable: - return NSLocalizedStringFromTable(@"Network Unreachable", @"AFNetworking", nil); - case AFNetworkReachabilityStatusReachableViaWWAN: - return NSLocalizedStringFromTable(@"Network Reachable via WWAN", @"AFNetworking", nil); - case AFNetworkReachabilityStatusReachableViaWiFi: - return NSLocalizedStringFromTable(@"Network Reachable via WiFi", @"AFNetworking", nil); - case AFNetworkReachabilityStatusUnknown: - default: - return NSLocalizedStringFromTable(@"Unknown Network Reachability", @"AFNetworking", nil); - } + return AFStringFromNetworkReachabilityStatus(self.networkReachabilityStatus); } #pragma mark -