2015-09-18 15:02:15 -07:00
// AFNetworkReachabilityManager.h
2017-03-09 20:10:44 -08:00
// Copyright (c) 2011– 2016 Alamofire Software Foundation ( http://alamofire.org/ )
2015-09-18 15:02:15 -07:00
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
# import <Foundation / Foundation.h>
# if !TARGET_OS_WATCH
# import <SystemConfiguration / SystemConfiguration.h>
typedef NS_ENUM ( NSInteger , AFNetworkReachabilityStatus ) {
AFNetworkReachabilityStatusUnknown = - 1 ,
AFNetworkReachabilityStatusNotReachable = 0 ,
AFNetworkReachabilityStatusReachableViaWWAN = 1 ,
AFNetworkReachabilityStatusReachableViaWiFi = 2 ,
} ;
NS_ASSUME_NONNULL_BEGIN
/**
` AFNetworkReachabilityManager ` monitors the reachability of domains , and addresses for both WWAN and WiFi network interfaces .
Reachability can be used to determine background information about why a network operation failed , or to trigger a network operation retrying when a connection is established . It should not be used to prevent a user from initiating a network request , as it ' s possible that an initial request may be required to establish reachability .
2017-03-09 20:10:44 -08:00
See Apple ' s Reachability Sample Code ( https : //developer.apple.com/library/ios/samplecode/reachability/ )
2015-09-18 15:02:15 -07:00
@ warning Instances of ` AFNetworkReachabilityManager ` must be started with ` - startMonitoring ` before reachability status can be determined .
*/
@ interface AFNetworkReachabilityManager : NSObject
/**
The current network reachability status .
*/
@ property ( readonly , nonatomic , assign ) AFNetworkReachabilityStatus networkReachabilityStatus ;
/**
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 ;
2017-03-09 20:10:44 -08:00
/**
Creates and returns a network reachability manager with the default socket address .
@ return An initialized network reachability manager , actively monitoring the default socket address .
*/
+ ( instancetype ) manager ;
2015-09-18 15:02:15 -07:00
/**
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 .
2017-03-09 20:10:44 -08:00
@ param address The socket address ( ` sockaddr_in6 ` ) used to evaluate network reachability .
2015-09-18 15:02:15 -07:00
@ return An initialized network reachability manager , actively monitoring the specified socket address .
*/
+ ( instancetype ) managerForAddress : ( const void * ) 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 NS_DESIGNATED_INITIALIZER ;
2017-03-09 20:10:44 -08:00
/**
* Initializes an instance of a network reachability manager
*
* @ return nil as this method is unavailable
*/
2020-01-27 20:27:44 -08:00
- ( instancetype ) init NS_UNAVAILABLE ;
2017-03-09 20:10:44 -08:00
2015-09-18 15:02:15 -07:00
///--------------------------------------------------
/// @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 .
@ param block A block object to be executed when the network availability of the ` baseURL ` host changes . . This block has no return value and takes a single argument which represents the various reachability states from the device to the ` baseURL ` .
*/
- ( void ) setReachabilityStatusChangeBlock : ( nullable void ( ^ ) ( AFNetworkReachabilityStatus status ) ) block ;
@ end
///----------------
/// @name Constants
///----------------
/**
# # Network Reachability
The following constants are provided by ` AFNetworkReachabilityManager ` as possible network reachability statuses .
enum {
AFNetworkReachabilityStatusUnknown ,
AFNetworkReachabilityStatusNotReachable ,
AFNetworkReachabilityStatusReachableViaWWAN ,
AFNetworkReachabilityStatusReachableViaWiFi ,
}
` AFNetworkReachabilityStatusUnknown `
The ` baseURL ` host reachability is not known .
` AFNetworkReachabilityStatusNotReachable `
The ` baseURL ` host cannot be reached .
` AFNetworkReachabilityStatusReachableViaWWAN `
The ` baseURL ` host can be reached via a cellular connection , such as EDGE or GPRS .
` AFNetworkReachabilityStatusReachableViaWiFi `
The ` baseURL ` host can be reached via a Wi - Fi connection .
# ## Keys for Notification UserInfo Dictionary
Strings that are used as keys in a ` userInfo ` dictionary in a network reachability status change notification .
` AFNetworkingReachabilityNotificationStatusItem `
A key in the userInfo dictionary in a ` AFNetworkingReachabilityDidChangeNotification ` notification .
The corresponding value is an ` NSNumber ` object representing the ` AFNetworkReachabilityStatus ` value for the current reachability status .
*/
///--------------------
/// @name Notifications
///--------------------
/**
Posted when network reachability changes .
This notification assigns no notification object . The ` userInfo ` dictionary contains an ` NSNumber ` object under the ` AFNetworkingReachabilityNotificationStatusItem ` key , representing the ` AFNetworkReachabilityStatus ` value for the current network reachability .
@ warning In order for network reachability to be monitored , include the ` SystemConfiguration ` framework 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 ` ) .
*/
2017-03-09 20:10:44 -08:00
FOUNDATION_EXPORT NSString * const AFNetworkingReachabilityDidChangeNotification ;
FOUNDATION_EXPORT NSString * const AFNetworkingReachabilityNotificationStatusItem ;
2015-09-18 15:02:15 -07:00
///--------------------
/// @name Functions
///--------------------
/**
Returns a localized string representation of an ` AFNetworkReachabilityStatus ` value .
*/
2017-03-09 20:10:44 -08:00
FOUNDATION_EXPORT NSString * AFStringFromNetworkReachabilityStatus ( AFNetworkReachabilityStatus status ) ;
2015-09-18 15:02:15 -07:00
NS_ASSUME_NONNULL_END
# endif