单军华
2018-07-12 3e8437ae559487362fae3525beb79c534c213a51
screendisplay/Pods/ZFPlayer/ZFPlayer/Classes/Core/ZFReachabilityManager.h
New file
@@ -0,0 +1,210 @@
//
//  ZFReachabilityManager.h
//  ZFPlayer
//
// Copyright (c) 2016年 任子丰 ( http://github.com/renzifeng )
//
// 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, ZFReachabilityStatus) {
    ZFReachabilityStatusUnknown          = -1,
    ZFReachabilityStatusNotReachable     = 0,
    ZFReachabilityStatusReachableViaWiFi = 1,
    ZFReachabilityStatusReachableVia2G   = 2,
    ZFReachabilityStatusReachableVia3G   = 3,
    ZFReachabilityStatusReachableVia4G   = 4,
};
NS_ASSUME_NONNULL_BEGIN
/**
 `ZFReachabilityManager` 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.
 See Apple's Reachability Sample Code ( https://developer.apple.com/library/ios/samplecode/reachability/ )
 @warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined.
 */
@interface ZFReachabilityManager : NSObject
/**
 The current network reachability status.
 */
@property (readonly, nonatomic, assign) ZFReachabilityStatus 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;
/**
 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;
/**
 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 (`sockaddr_in6`) used to evaluate network reachability.
 @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;
///--------------------------------------------------
/// @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 (^)(ZFReachabilityStatus 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`).
 */
FOUNDATION_EXPORT NSString * const ZFReachabilityDidChangeNotification;
FOUNDATION_EXPORT NSString * const ZFReachabilityNotificationStatusItem;
///--------------------
/// @name Functions
///--------------------
/**
 Returns a localized string representation of an `ZFReachabilityStatus` value.
 */
FOUNDATION_EXPORT NSString * ZFStringFromNetworkReachabilityStatus(ZFReachabilityStatus status);
NS_ASSUME_NONNULL_END
#endif