|
|
|
/*
|
|
|
|
Copyright (C) 2015 Apple Inc. All Rights Reserved.
|
|
|
|
See LICENSE.txt for this sample’s licensing information
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
Basic demonstration of how to use the SystemConfiguration Reachablity APIs.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#import <SystemConfiguration/SystemConfiguration.h>
|
|
|
|
#import <netinet/in.h>
|
|
|
|
|
|
|
|
|
|
|
|
typedef NS_ENUM(NSInteger, NetworkStatus) {
|
|
|
|
NotReachable = 0,
|
|
|
|
ReachableViaWiFi,
|
|
|
|
ReachableViaWWAN
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
extern NSString *kReachabilityChangedNotification;
|
|
|
|
|
|
|
|
|
|
|
|
@interface Reachability : NSObject
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* Use to check the reachability of a given host name.
|
|
|
|
*/
|
|
|
|
+ (instancetype)reachabilityWithHostName:(NSString *)hostName;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* Use to check the reachability of a given IP address.
|
|
|
|
*/
|
|
|
|
+ (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* Checks whether the default route is available. Should be used by applications that do not connect to a particular host.
|
|
|
|
*/
|
|
|
|
+ (instancetype)reachabilityForInternetConnection;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* Checks whether a local WiFi connection is available.
|
|
|
|
*/
|
|
|
|
+ (instancetype)reachabilityForLocalWiFi;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* Start listening for reachability notifications on the current run loop.
|
|
|
|
*/
|
|
|
|
@property (NS_NONATOMIC_IOSONLY, readonly) BOOL startNotifier;
|
|
|
|
- (void)stopNotifier;
|
|
|
|
|
|
|
|
@property (NS_NONATOMIC_IOSONLY, readonly) NetworkStatus currentReachabilityStatus;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* WWAN may be available, but not active until a connection has been established. WiFi may require a connection for VPN on Demand.
|
|
|
|
*/
|
|
|
|
@property (NS_NONATOMIC_IOSONLY, readonly) BOOL connectionRequired;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|