// // YYReachability.h // YYKit // // Created by ibireme on 15/2/6. // Copyright (c) 2015 ibireme. // // This source code is licensed under the MIT-style license found in the // LICENSE file in the root directory of this source tree. // #import #import #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSUInteger, YYReachabilityStatus) { YYReachabilityStatusNone = 0, ///< Not Reachable YYReachabilityStatusWWAN = 1, ///< Reachable via WWAN (2G/3G/4G) YYReachabilityStatusWiFi = 2, ///< Reachable via WiFi }; typedef NS_ENUM(NSUInteger, YYReachabilityWWANStatus) { YYReachabilityWWANStatusNone = 0, ///< Not Reachable vis WWAN YYReachabilityWWANStatus2G = 2, ///< Reachable via 2G (GPRS/EDGE) 10~100Kbps YYReachabilityWWANStatus3G = 3, ///< Reachable via 3G (WCDMA/HSDPA/...) 1~10Mbps YYReachabilityWWANStatus4G = 4, ///< Reachable via 4G (eHRPD/LTE) 100Mbps }; /** `YYReachability` can used to monitor the network status of an iOS device. */ @interface YYReachability : NSObject @property (nonatomic, readonly) SCNetworkReachabilityFlags flags; ///< Current flags. @property (nonatomic, readonly) YYReachabilityStatus status; ///< Current status. @property (nonatomic, readonly) YYReachabilityWWANStatus wwanStatus NS_AVAILABLE_IOS(7_0); ///< Current WWAN status. @property (nonatomic, readonly, getter=isReachable) BOOL reachable; ///< Current reachable status. /// Notify block which will be called on main thread when network changed. @property (nullable, nonatomic, copy) void (^notifyBlock)(YYReachability *reachability); /// Create an object to check the reachability of the default route. + (instancetype)reachability; /// Create an object to check the reachability of the local WI-FI. + (instancetype)reachabilityForLocalWifi DEPRECATED_MSG_ATTRIBUTE("unnecessary and potentially harmful"); /// Create an object to check the reachability of a given host name. + (nullable instancetype)reachabilityWithHostname:(NSString *)hostname; /// Create an object to check the reachability of a given IP address /// @param hostAddress You may pass `struct sockaddr_in` for IPv4 address or `struct sockaddr_in6` for IPv6 address. + (nullable instancetype)reachabilityWithAddress:(const struct sockaddr *)hostAddress; @end NS_ASSUME_NONNULL_END