Commit b8790e38 by GuoJianPeng

update

parent 436a318d
......@@ -58,14 +58,16 @@
-(UILabel *)titleLabel{
if(!_titleLabel){
_titleLabel = [[UILabel alloc] init];
_titleLabel.textColor = [UIColor colorWithRed:51/254.0 green:51/254.0 blue:51/254.0 alpha:1];
_titleLabel.textColor = [UIColor colorWithRed:54/255.0 green:54/255.0 blue:54/255.0 alpha:1];
_titleLabel.font = [UIFont systemFontOfSize:13];
_titleLabel.translatesAutoresizingMaskIntoConstraints = false;
}return _titleLabel;
}
-(UILabel *)createRightLabel:(BOOL)pass{
UILabel * label = [[UILabel alloc] init];
label.textColor = pass ? UIColor.greenColor : UIColor.redColor;
UIColor * greenColor = [UIColor colorWithRed:92/255.0 green:201/255.0 blue:148/255.0 alpha:1];
UIColor * redColor = [UIColor colorWithRed:223/255.0 green:94/255.0 blue:84/255.0 alpha:1];
label.textColor = pass ? greenColor :redColor;
label.font = [UIFont systemFontOfSize:12];
label.translatesAutoresizingMaskIntoConstraints = false;
return label;
......
......@@ -6,10 +6,7 @@
//
#import <Foundation/Foundation.h>
#import <ASNetwork/ASReachability.h>
#import <ASNetwork/ASCellularNet.h>
#import <ASNetwork/ASPingService.h>
#import <ASNetwork/ASInterfaceService.h>
#import <ASNetwork/ASNetwork.h>
NS_ASSUME_NONNULL_BEGIN
......@@ -22,10 +19,19 @@ typedef NS_ENUM(NSInteger,CRMNetSignalStrength)
};
@protocol CRMNetDetectServiceDelegate <NSObject>
//连接情况和信号强度一并返回
- (void)didGotNetworkStatus:(ASReachabilityStatus)status signalStrength:(CRMNetSignalStrength)strength;
- (void)didGotIPState:(BOOL)isNormal ;//Wifi下非自有IP则正常,蜂窝下有IP则正常
- (void)didGotBusinessServiceState:(BOOL)isNormal host:(NSString*)host millionSeconds:(NSTimeInterval)millionSeconds;
- (void)didFinishedBusinessService:(BOOL)isNormal;//正常数小于总数,则显示异常
//ping www.baidu.com,能收到回调表示外网访问正常,IP状态视为正常,否则为异常.
- (void)didGotIPState:(BOOL)isNormal ;
//单个业务服务检测回调
- (void)didGotBusinessServiceState:(BOOL)isNormal
host:(NSString*)host
hostIndex:(NSInteger)hostIndex millionSeconds:(NSTimeInterval)millionSeconds;
//完成所有业务服务检测回调
- (void)didFinishedBusinessService:(BOOL)isNormal;
@end
@interface CRMNetDetectService : NSObject
......@@ -41,10 +47,9 @@ typedef NS_ENUM(NSInteger,CRMNetSignalStrength)
**/
- (void)stopDetecting;
@property(nonatomic,strong,nullable)NSArray<NSString*>*businessHostList;
@property(nonatomic,assign,readonly)BOOL isDetecting;
@property(nonatomic,strong,nullable)NSArray<NSString*>*businessHostList;
@property(nonatomic,weak,readonly)id<CRMNetDetectServiceDelegate>delegate;
@property(nonatomic,assign,readonly)BOOL isAllFinished;
@end
NS_ASSUME_NONNULL_END
......@@ -10,17 +10,14 @@
@interface CRMNetDetectService()<ASPingServiceDelegate,ASReachabilityDelegate>
{
NSInteger _successPingHostCount;
}
@end
@implementation CRMNetDetectService
{
ASReachability *_reachability;
ASInterfaceService *_interfaceService;
ASPingService *_pingService;
NSMutableArray <NSString*>*_pingingHostList;
BOOL _isReachabilityFinished;
}
@end
@implementation CRMNetDetectService
-(void)dealloc
{
[self stopDetecting];
......@@ -35,78 +32,67 @@
{
if(_isDetecting){return;}
_isDetecting = true;
if([_businessHostList count]){
_pingingHostList = _businessHostList.mutableCopy;
_pingService = [[ASPingService alloc] initWithDelegate:self];
[self _readHostAndPing];
}
//先检测网络态,再检测具体业务域名
[self _startReachabilityService];
}
-(void)stopDetecting
{
_isDetecting = false;
[self _stopPingService];
[self _stopReachabilityService];
_isAllFinished = false;
_interfaceService = nil;
_isReachabilityFinished = false;
[self _stopPingService];
_successPingHostCount = 0;
}
#pragma mark - ASPingServiceDelegate
- (void)pingService:(ASPingService*)service pingingWithDuration:(NSTimeInterval)millionSeconds seq:(uint16_t)seq
-(void)pingService:(ASPingService *)service singlePing:(uint16_t)seq finishedWithDuration:(NSTimeInterval)millionSeconds
{
[self.delegate didGotBusinessServiceState:true host:_pingingHostList.firstObject millionSeconds:millionSeconds];
}
- (void)pingService:(ASPingService*)service pingTimeout:(uint16_t)seq
{
if(!_businessHostList){return;}
NSInteger index = [_businessHostList indexOfObject:service.targetHost];
if(index==NSNotFound){
return;//在处理www.baidu.com
}
[self.delegate didGotBusinessServiceState:true host:service.targetHost hostIndex:index millionSeconds:millionSeconds];
[_pingingHostList removeObject:service.targetHost];
}
- (void)pingService:(ASPingService*)service tmporaryErrorHappens:(NSError*)error seq:(uint16_t)seq
-(void)pingService:(ASPingService *)service singlePingTimeout:(uint16_t)seq
{
if(!_businessHostList){return;}
NSInteger index = [_businessHostList indexOfObject:service.targetHost];
if(index==NSNotFound){
return;//在处理www.baidu.com
}
[_pingingHostList removeObject:service.targetHost];
[self.delegate didGotBusinessServiceState:false host:service.targetHost hostIndex:index millionSeconds:0];
}
- (void)pingService:(ASPingService*)service failedToStartWithError:(NSError*)error
-(void)pingService:(ASPingService *)service singlePing:(uint16_t)seq tmporaryErrorHappens:(NSError *)error
{
[_pingingHostList removeObjectAtIndex:0];
[self _readHostAndPing];
if(!_businessHostList){return;}
NSInteger index = [_businessHostList indexOfObject:service.targetHost];
if(index==NSNotFound){
return;//在处理www.baidu.com
}
[_pingingHostList removeObject:service.targetHost];
[self.delegate didGotBusinessServiceState:false host:service.targetHost hostIndex:index millionSeconds:0];
}
- (void)pingService:(ASPingService*)service stopWithError:(NSError*_Nullable)error successPingCount:(NSInteger)successPingCount
{
if(!error){
_successPingHostCount++;
}else{
[self.delegate didGotBusinessServiceState:false host:_pingingHostList.firstObject millionSeconds:0];
if([service.targetHost isEqualToString:@"www.baidu.com"]){
[self.delegate didGotIPState:successPingCount>0];
//开始业务ping
_pingingHostList = _businessHostList.mutableCopy;
_pingService.pingCount = 1;
}
[self _readHostAndPing];
}
#pragma mark - ASReachabilityDelegate
- (void)reachabilityBecomesNotReachable:(ASReachability*)ability
{
_isReachabilityFinished = true;
[self.delegate didGotNetworkStatus:ability.status signalStrength:CRMNetSignalStrengthNone];
[self.delegate didGotIPState:false];
}
- (void)reachabilityChangedToWiFi:(ASReachability*)ability
{
_isReachabilityFinished = true;
[self.delegate didGotNetworkStatus:ability.status signalStrength:CRMNetSignalStrengthStrong];
[self _startIPService];
[self.delegate didGotIPState:[self _isWifiIPNormal]];
}
- (void)reachabilityChangedToWWAN:(ASReachability*)ability
type:(ASCellularNetType)type signalStrength:(ASCelluarSignalStrength)strength
{
_isReachabilityFinished = true;
[self.delegate didGotNetworkStatus:ability.status signalStrength:strength == ASCelluarSignalStrengthStrong?CRMNetSignalStrengthStrong:CRMNetSignalStrengthWeak];
[self _startIPService];
[self.delegate didGotIPState:[self _isCelluarIPNormal]];
}
#pragma mark - Ping
- (void)_readHostAndPing
{
if(!_pingService){return;}
else if (!_pingingHostList.count){
if(!_pingService){
_pingService = [[ASPingService alloc] initWithDelegate:self];
}
if (!_pingingHostList.count){
[self.delegate didFinishedBusinessService:_successPingHostCount == _businessHostList.count];
[self stopDetecting];
return;
}
_pingService.targetHost = _pingingHostList.firstObject;
......@@ -133,20 +119,10 @@
[_reachability stopObserving];
}
}
- (void)_startIPService
{
if(!_interfaceService){
_interfaceService = [[ASInterfaceService alloc] init];
}
[_interfaceService refreshAvailableInterfaces];
}
- (void)stopIPService
{
_interfaceService = nil;
}
- (BOOL)_isWifiIPNormal
{
NSArray<NSString *> *wifiIPs = _interfaceService.getWiFiIP;
ASNetworkInterfaceInfo * info = [[ASNetworkInterfaceInfo alloc] init];
NSArray<NSString *> *wifiIPs = [info getWiFiIPAndOnlyIPV4:true];
if(!wifiIPs.count){
return false;
}
......@@ -157,7 +133,8 @@
}
- (BOOL)_isCelluarIPNormal
{
NSArray<NSString *> *cellularIps = _interfaceService.getCelluarIP;
ASNetworkInterfaceInfo * info = [[ASNetworkInterfaceInfo alloc] init];
NSArray<NSString *> *cellularIps = [info getCelluarIPAndOnlyIPV:true];
if(!cellularIps.count){
return false;
}
......@@ -166,4 +143,27 @@
}
return true;
}
#pragma mark - ASReachabilityDelegate
- (void)reachabilityStatusDidChanged:(ASReachabilityStatus)status statusDesc:(nonnull NSString *)desc {
NSLog(@"reachability status desc:%@",desc);
if(status == ASReachabilityStatusNotReachable){
[self.delegate didGotNetworkStatus:status signalStrength:CRMNetSignalStrengthNone];
}else if (status == ASReachabilityStatusWifi){
[self.delegate didGotNetworkStatus:status signalStrength:CRMNetSignalStrengthStrong];
}else if (status == ASReachabilityStatusWWAN){
ASCellularNet * celluarNet = [[ASCellularNet alloc] init];
CRMNetSignalStrength strength = CRMNetSignalStrengthNone;
if(celluarNet){
strength = (celluarNet.signalStrength==ASCelluarSignalStrengthStrong?CRMNetSignalStrengthStrong:CRMNetSignalStrengthWeak);
}
[self.delegate didGotNetworkStatus:status signalStrength:strength];
}else{
//preserved
}
[self _stopReachabilityService];
_pingService = [[ASPingService alloc] initWithDelegate:self];
_pingService.targetHost = @"www.baidu.com";
_pingService.pingCount = 3;
[_pingService starts];
}
@end
......@@ -23,13 +23,14 @@
@implementation CRMNetDetectView
{
CRMNetDetectService * _service;
NSArray<NSDictionary*>*_businessHostInfo;
}
-(instancetype)initWithFrame:(CGRect)frame{
if(self = [super initWithFrame:frame]){
[self _initBaseCellData];
_service = [[CRMNetDetectService alloc] initWithDelegate:self];
_tableView = [[UITableView alloc] initWithFrame:frame];
_tableView.backgroundColor = UIColor.groupTableViewBackgroundColor;
_tableView.backgroundColor = [UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1];
_tableView.dataSource = self;
_tableView.rowHeight = 44;
_tableView.tableFooterView = [self _footView];
......@@ -72,10 +73,12 @@
#pragma mark - Interface
-(void)startsChecking
{
[self setBusinessHosts:_businessHostInfo];
[_service startsDetecting];
}
-(void)setBusinessHosts:(NSArray<NSDictionary *> *)hosts
{
_businessHostInfo = hosts;
if(_cellDatas.count){
[self _initBaseCellData];
}
......@@ -92,24 +95,36 @@
data.leftTitle = name;
[_cellDatas addObject:data];
}
[self.tableView reloadData];
_service.businessHostList = hostList;
}
#pragma mark -CRMNetDetectServiceDelegate
- (void)didGotNetworkStatus:(ASReachabilityStatus)status signalStrength:(CRMNetSignalStrength)strength
{
_reachabilityData.state = (status == ASReachabilityStatusWifi ||(status == ASReachabilityStatusWWAN))?CRMNetDetectCellStateNormal:CRMNetDetectCellStateNotNormal;
_signalStrengthData.state = (strength==CRMNetSignalStrengthNone)?CRMNetDetectCellStateNotNormal:CRMNetDetectCellStateNormal;
if(status == ASReachabilityStatusNotReachable){
_signalStrengthData.rightText = @"无";
}else{
_signalStrengthData.rightText =(strength==CRMNetSignalStrengthStrong)?@"强":@"弱";
}
[self.tableView reloadData];
}
- (void)didGotIPState:(BOOL)isNormal
{
_ipData.state = isNormal ? CRMNetDetectCellStateNormal :CRMNetDetectCellStateNotNormal;
[self.tableView reloadData];
}
- (void)didGotBusinessServiceState:(BOOL)isNormal host:(NSString*)host millionSeconds:(NSTimeInterval)millionSeconds
- (void)didGotBusinessServiceState:(BOOL)isNormal host:(nonnull NSString *)host hostIndex:(NSInteger)hostIndex millionSeconds:(NSTimeInterval)millionSeconds
{
CRMNetDetectCellData * data = _cellDatas[hostIndex+_staticCellDataCount];
data.state = isNormal? CRMNetDetectCellStateNormal :CRMNetDetectCellStateNotNormal;
data.rightText = isNormal ? [NSString stringWithFormat:@"正常 %ld ms",(NSInteger)millionSeconds] : @"异常";
[self.tableView reloadData];
}
- (void)didFinishedBusinessService:(BOOL)isNormal
{
_serverConnectData.state =isNormal? CRMNetDetectCellStateNormal :CRMNetDetectCellStateNotNormal;
[self.tableView reloadData];
}
#pragma mark - Getters
-(UIButton *)checkButton
......@@ -117,7 +132,7 @@
if(!_checkButton){
_checkButton = [[UIButton alloc] init];
_checkButton.layer.cornerRadius = 3;
_checkButton.backgroundColor = UIColor.orangeColor;
_checkButton.backgroundColor = [UIColor colorWithRed:238/255.0 green:131/255.0 blue:68/255.0 alpha:1];
[_checkButton setTitle:@"重新检测" forState:UIControlStateNormal];
[_checkButton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal];
[_checkButton.titleLabel setFont:[UIFont systemFontOfSize:14]];
......@@ -139,12 +154,12 @@
{
CGFloat marginTop = 20;
CGFloat marginBottom = 30;
CGFloat btnHeight = 60;
CGFloat btnHeight = 100;
CGFloat seperateHeight = 15;
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, marginTop+marginBottom+btnHeight)];
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, marginTop+marginBottom+btnHeight+seperateHeight)];
view.backgroundColor = UIColor.whiteColor;
UIView * seperateView = [[UIView alloc] initWithFrame:CGRectMake(0, view.bounds.size.height-seperateHeight, view.bounds.size.width, seperateHeight)];
seperateView.backgroundColor = UIColor.groupTableViewBackgroundColor;
seperateView.backgroundColor = [UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1];
[view addSubview:seperateView];
return view;
}
......
PODS:
- ASNetwork (1.0.0)
- ASNetwork (1.0.2)
- CRMNetDetect (0.1.0):
- ASNetwork
......@@ -15,7 +15,7 @@ EXTERNAL SOURCES:
:path: "../"
SPEC CHECKSUMS:
ASNetwork: a1bdef0d07fc5c4c78cb01a380baaa812ee9944e
ASNetwork: 3beefd29932096032e386d1a949cb9255eda7d54
CRMNetDetect: 30b81d339ea6293c8cd2cee10d31197a4da7b16c
PODFILE CHECKSUM: f5247f2e9f0505f8db1736cd0e5716b42c1a2390
......
......@@ -26,17 +26,17 @@ typedef NS_ENUM(NSInteger,ASCelluarSignalStrength){
};
@interface ASCellularNet : NSObject
/**
* @brief 更新当前蜂窝流量接入情况,包括接入类型,信号强度等;网络变化等情形时,需主动查询刷新状态.
* @brief 当前蜂窝网接入信息,若无蜂窝接入信息则返回nil.
**/
- (void)updateNetworkInfo;
- (nullable instancetype)init;
/**
* @brief 接入网络类型系统描述,包括CTRadioAccessTechnologyEdge等;若用户不启用蜂窝流量,会返回nil
* @brief 接入网络类型系统描述,包括CTRadioAccessTechnologyEdge等
**/
@property(nonatomic,copy,nullable,readonly)NSString * accessNetValue;
@property(nonatomic,copy,readonly)NSString * typeValue;
/**
* @brief accessNetValue的枚举映射.
**/
@property(nonatomic,assign,readonly)ASCellularNetType accessNet;
@property(nonatomic,assign,readonly)ASCellularNetType type;
/**
* @brief 信号强度。基于accessNet的一个估算,默认4G/5G为strong,其余为weak;
* 若想检测相应域名连接是否稳定、快速(强弱网),你应当使用icmp/http进行检测RTT等耗时
......
......@@ -13,6 +13,11 @@
ASCellularNetType _accessType;
ASCelluarSignalStrength _signalStrength;
}
-(instancetype)init{
if(self = [super init]){
[self updateNetworkInfo];
}return _accessTypeValue ? self : nil;
}
-(void)updateNetworkInfo
{
CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
......@@ -29,11 +34,11 @@
_accessType = [self _parsedAccessType];
_signalStrength = [self _mapSignalStrengthEvaluatedForType:_accessType];
}
-(NSString *)accessNetValue
-(NSString *)typeValue
{
return _accessTypeValue;
}
-(ASCellularNetType)accessNet
-(ASCellularNetType)type
{
return _accessType;
}
......@@ -45,7 +50,7 @@
-(ASCellularNetType)_parsedAccessType
{
ASCellularNetType type = ASCellularTypeUnknown;
NSString * value = [self accessNetValue];
NSString * value = [self typeValue];
NSArray * secondGValues = @[
CTRadioAccessTechnologyEdge,CTRadioAccessTechnologyGPRS
];
......
//
// ASNetwork.h
// ASNetwork
//
// Created by 坚鹏 on 2024/10/18.
//
#ifndef ASNetwork_h
#define ASNetwork_h
#import <ASNetwork/ASReachability.h>
#import <ASNetwork/ASNetworkInterfaceInfo.h>
#import <ASNetwork/ASPingService.h>
#import <ASNetwork/ASCellularNet.h>
#endif /* ASNetwork_h */
......@@ -31,10 +31,10 @@ typedef NS_ENUM(NSInteger,ASIPType)
/**
* @class 静态查询当前已连接的接口,包括wifi或蜂窝ip等.
**/
@interface ASInterfaceService : NSObject
@interface ASNetworkInterfaceInfo : NSObject
/**
* @brief 刷新可用接口,需主动调用.
* @brief 刷新可用接口
**/
- (void)refreshAvailableInterfaces;
......@@ -45,13 +45,15 @@ typedef NS_ENUM(NSInteger,ASIPType)
/**
* @return 获取WIFI对应ip列表,当ipv4+ipv6同时启用时会返回多个.
* @param onlyIPv4 只返回ipv4的地址.
**/
- (NSArray<NSString*>* _Nullable)getWiFiIP;
- (NSArray<NSString*>* _Nullable)getWiFiIPAndOnlyIPV4:(BOOL)onlyIPv4;
/**
* @return 查询蜂窝IP,当多种sim卡启用或ipv6启用时也可能返回多个
* @param onlyIPv4 只返回ipv4的地址.
**/
- (NSArray<NSString*>*_Nullable)getCelluarIP;
- (NSArray<NSString*>*_Nullable)getCelluarIPAndOnlyIPV:(BOOL)onlyIPv4;
/**
* @property 可用的接口IP列表
......
......@@ -5,15 +5,19 @@
// Created by 坚鹏 on 2024/10/15.
//
#import "ASInterfaceService.h"
#import "ASNetworkInterfaceInfo.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
#include <net/if.h>
@interface ASIPEntity()
- (instancetype)initWithInterfaceName:(NSString*)name ip:(NSString*)ip isIpv6:(BOOL)isIpv6;
@end
@implementation ASInterfaceService
@implementation ASNetworkInterfaceInfo
-(instancetype)init{
if(self = [super init]){
[self refreshAvailableInterfaces];
}return self;
}
-(void)refreshAvailableInterfaces
{
struct ifaddrs *interfaces = NULL;
......@@ -48,22 +52,22 @@
freeifaddrs(interfaces);
_availableIPList = newIPList;
}
-(NSArray<NSString *> *)getWiFiIP
-(NSArray<NSString *> *)getWiFiIPAndOnlyIPV4:(BOOL)onlyIPv4
{
NSMutableArray * list;
for (ASIPEntity * ipEntity in _availableIPList) {
if(ipEntity.type == ASIPTypeWiFi){
if(ipEntity.type == ASIPTypeWiFi && (!onlyIPv4 || ipEntity.isIpv4)){
if(!list){list = @[].mutableCopy;}
[list addObject:ipEntity.value];
}
}
return list;
}
-(NSArray<NSString *> *)getCelluarIP
-(NSArray<NSString *> *)getCelluarIPAndOnlyIPV:(BOOL)onlyIPv4
{
NSMutableArray * list;
for (ASIPEntity * ipEntity in _availableIPList) {
if(ipEntity.type == ASIPTypeCelluar){
if(ipEntity.type == ASIPTypeCelluar&& (!onlyIPv4 || ipEntity.isIpv4)){
if(!list){list = @[].mutableCopy;}
[list addObject:ipEntity.value];
}
......@@ -104,6 +108,7 @@
}
-(BOOL)isPrivateIP:(NSString*)value
{
if([value isKindOfClass:NSString.class] == false){return false;}
if(_isIpv6){
return [self isIPv6PrivateAddress:value];
}
......@@ -120,12 +125,12 @@
}
// 判断 IPv6 地址是否为 Link-Local 地址
- (BOOL)isIPv6LinkLocalAddress:(NSString *)ipAddress {
return [ipAddress hasPrefix:@"fe80"];
return [ipAddress isKindOfClass:NSString.class]&&[ipAddress hasPrefix:@"fe80"];
}
// 判断 IPv6 地址是否为私有 IP 地址(Unique Local Address, ULA)
- (BOOL)isIPv6PrivateAddress:(NSString *)ipAddress {
return [ipAddress hasPrefix:@"fc00"] || [ipAddress hasPrefix:@"fd00"];
return [ipAddress isKindOfClass:NSString.class] && ([ipAddress hasPrefix:@"fc00"] || [ipAddress hasPrefix:@"fd00"]);
}
-(NSString *)description
{
......
......@@ -11,13 +11,13 @@ NS_ASSUME_NONNULL_BEGIN
@class ASPingService;
@protocol ASPingServiceDelegate <NSObject>
- (void)pingService:(ASPingService*)service pingingWithDuration:(NSTimeInterval)millionSeconds seq:(uint16_t)seq;//正常收到回调
- (void)pingService:(ASPingService*)service pingTimeout:(uint16_t)seq;//ping超时,可能来自自身控制,也可能来自icmp通知,这里不做区分
- (void)pingService:(ASPingService*)service tmporaryErrorHappens:(NSError*)error seq:(uint16_t)seq;//可恢复的错误,后续会继续ping
//单次ping回调:成功、超时、出错.
- (void)pingService:(ASPingService*)service singlePing:(uint16_t)seq finishedWithDuration:(NSTimeInterval)millionSeconds;
- (void)pingService:(ASPingService*)service singlePingTimeout:(uint16_t)seq;
- (void)pingService:(ASPingService*)service singlePing:(uint16_t)seq tmporaryErrorHappens:(NSError*)error;
@optional
- (void)pingingServiceDidStart:(ASPingService*)service;//[调用starts]成功
- (void)pingService:(ASPingService*)service failedToStartWithError:(NSError*)error;//调用[starts]失败
- (void)pingService:(ASPingService*)service stopWithError:(NSError*_Nullable)error successPingCount:(NSInteger)successPingCount;//ping终止,error为空时则为正常终止,若successPingCount为0,你可以考虑使用http替代进行网络检测
@end
@interface ASPingService : NSObject
......@@ -29,11 +29,14 @@ NS_ASSUME_NONNULL_BEGIN
- (void)stops;
@property(nonatomic,assign)BOOL usingICMPv6;//大陆的v6支持有限,一般不建议开启.
@property(nonatomic,assign,readonly)BOOL isPinging;//判断是否在ping中.
@property(nonatomic,copy)NSString * targetHost;//ping目标路径,不能为空.
@property(nonatomic,assign)NSInteger pingCount;//默认为1即只ping一次.
/**
* @property timeoutSeconds 单次Ping耗时,默认为2s,超出2s收不到当次ping回调按超时处理;必须大于等于1,小于1则忽略.
**/
@property(nonatomic,assign)NSTimeInterval timeoutSeconds;
@property(nonatomic,weak,readonly)id<ASPingServiceDelegate>delegate;
@property(nonatomic,assign,readonly)BOOL isPinging;
@property(nonatomic,copy)NSString * targetHost;
@property(nonatomic,assign)NSInteger pingCount;//默认为1即只ping一次。
@property(nonatomic,assign)NSTimeInterval timeoutSeconds;//默认为2s,超出2s收不到当次ping回调,则取消当次ping,就算后续收到回调也ignore;不建议设置过低.
@end
NS_ASSUME_NONNULL_END
......@@ -19,6 +19,7 @@ static uint16_t KASPingNotStartedSeq = -1;
NSTimeInterval _startPingTime;
uint16_t _pingingSeq;
NSInteger _successPingCount;
NSMutableArray<NSNumber*>*_pingDurationList;
}
-(instancetype)initWithDelegate:(id<ASPingServiceDelegate>)delegate{
if (self = [super init]) {
......@@ -32,15 +33,13 @@ static uint16_t KASPingNotStartedSeq = -1;
-(void)starts
{
if(_isPinging){
if([self.delegate respondsToSelector:@selector(pingService:failedToStartWithError:)]){
[self.delegate pingService:self failedToStartWithError:[self _createErrorWithMsg:@"Pinging Aready!"]];
}
return;
}
NSAssert(_targetHost, @"target host could not be nil.");
NSAssert(_pingCount >=1, @"Ping count could not smaller than 1");
NSAssert(_timeoutSeconds >=1, @"Ping timeout could not smaller than 1");
_isPinging = true;
_pingDurationList = @[].mutableCopy;
_samplePing = [[ASSimplePing alloc] initWithHostName:_targetHost];
_samplePing.delegate = self;
_samplePing.addressStyle = _usingICMPv6?ASSimplePingAddressStyleICMPv6:ASSimplePingAddressStyleICMPv4;
......@@ -72,9 +71,10 @@ static uint16_t KASPingNotStartedSeq = -1;
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(_gotManulyTimeoutNotification) object:nil];
_pingingSeq ++;
if(_pingingSeq >= _pingCount){
NSInteger successCount = _successPingCount;
[self stops];
if([self.delegate respondsToSelector:@selector(pingService:stopWithError: successPingCount:)]){
[self.delegate pingService:self stopWithError:nil successPingCount:_successPingCount];
[self.delegate pingService:self stopWithError:nil successPingCount:successCount];
}
return;
}
......@@ -86,8 +86,8 @@ static uint16_t KASPingNotStartedSeq = -1;
{
NSLog(@"Request timeout for icmp_seq %hu",_pingingSeq);
//当次ping超时
if([self.delegate respondsToSelector:@selector(pingService:pingTimeout:)]){
[self.delegate pingService:self pingTimeout:_pingingSeq];
if([self.delegate respondsToSelector:@selector(pingService:singlePingTimeout:)]){
[self.delegate pingService:self singlePingTimeout:_pingingSeq];
}
//开启下次ping
[self _sendPingOnce];
......@@ -106,6 +106,14 @@ static uint16_t KASPingNotStartedSeq = -1;
}
return (now - _startPingTime)/1000;
}
#pragma mark - Setter
-(void)setTimeoutSeconds:(NSTimeInterval)timeoutSeconds
{
if(timeoutSeconds<1){
return;
}
_timeoutSeconds = timeoutSeconds;
}
#pragma mark - ASSimplePingDelegate
- (void)simplePing:(ASSimplePing *)pinger didStartWithAddress:(NSData *)address
{
......@@ -130,8 +138,8 @@ static uint16_t KASPingNotStartedSeq = -1;
- (void)simplePing:(ASSimplePing *)pinger didFailToSendPacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber error:(NSError *)error
{
NSLog(@"did failed to send ping");
if([self.delegate respondsToSelector:@selector(pingService:tmporaryErrorHappens:seq:)]){
[self.delegate pingService:self tmporaryErrorHappens:error seq:_pingingSeq];
if([self.delegate respondsToSelector:@selector(pingService:singlePing:tmporaryErrorHappens:)]){
[self.delegate pingService:self singlePing:_pingingSeq tmporaryErrorHappens:error];
}
[self _sendPingOnce];//resend again.
}
......@@ -140,8 +148,9 @@ static uint16_t KASPingNotStartedSeq = -1;
if(sequenceNumber == _pingingSeq){
NSTimeInterval duration = [self _getPingTimePastMicroSeconds];
NSLog(@"%ld bytes from %@: icmp_seq=%hu time=%.3f ms",packet.length,_targetHost,sequenceNumber,duration);
[self.delegate pingService:self pingingWithDuration:duration seq:sequenceNumber];
[self.delegate pingService:self singlePing:sequenceNumber finishedWithDuration:duration];
_successPingCount++;
[_pingDurationList addObject:@(duration)];
[self _sendPingOnce];
}else{
NSLog(@"got outdate sequenceNumber:%hu",sequenceNumber);
......@@ -150,8 +159,8 @@ static uint16_t KASPingNotStartedSeq = -1;
- (void)simplePing:(ASSimplePing *)pinger didReceiveUnexpectedPacket:(NSData *)packet
{
NSLog(@"did failed to send ping");
if([self.delegate respondsToSelector:@selector(pingService:tmporaryErrorHappens:seq:)]){
[self.delegate pingService:self tmporaryErrorHappens:[self _createErrorWithMsg:@"ReceiveUnexpectedPacket"] seq:_pingingSeq];
if([self.delegate respondsToSelector:@selector(pingService:singlePing:tmporaryErrorHappens:)]){
[self.delegate pingService:self singlePing:_pingingSeq tmporaryErrorHappens:[self _createErrorWithMsg:@"ReceiveUnexpectedPacket"]];
}
[self _sendPingOnce];//ignore,send again.
}
......
......@@ -6,7 +6,6 @@
//
#import <Foundation/Foundation.h>
#import <ASNetwork/ASCellularNet.h>
NS_ASSUME_NONNULL_BEGIN
......@@ -18,17 +17,10 @@ typedef NS_ENUM(NSInteger,ASReachabilityStatus){
};
@class ASReachability;
@protocol ASReachabilityDelegate <NSObject>
- (void)reachabilityBecomesNotReachable:(ASReachability*)ability;
/**
* @brief 使用Wifi时回调;可考虑使用ASInterfaceService.getWiFiIP进一步获取对应IP
**/
- (void)reachabilityChangedToWiFi:(ASReachability*)ability;
/**
* @brief 使用蜂窝时回调;可考虑使用ASInterfaceService.getCelluarIP进一步获取对应IP
* @brief 网络接入状态监听;当status为WWAN时可以考虑使用ASCellularNet获取更详细的信息
**/
- (void)reachabilityChangedToWWAN:(ASReachability*)ability
type:(ASCellularNetType)type signalStrength:(ASCelluarSignalStrength)strength;
- (void)reachabilityStatusDidChanged:(ASReachabilityStatus)status statusDesc:(NSString*)desc;
@end
/**
* @class 当前activate network探测.
......@@ -55,6 +47,7 @@ typedef NS_ENUM(NSInteger,ASReachabilityStatus){
* @property status 当前activate network的状态.
**/
@property(nonatomic,assign,readonly)ASReachabilityStatus status;
@property(nonatomic,copy,nullable,readonly)NSString * statusDesc;
@property(nonatomic,weak,readonly)id<ASReachabilityDelegate>delegate;
@end
......
......@@ -10,10 +10,7 @@
#import <netinet/in.h>
@interface ASReachability()
{
SCNetworkReachabilityFlags _reachabilityFlags;
}
@property(nonatomic,strong,nullable)ASCellularNet * celluarService;
@property (nonatomic) SCNetworkReachabilityRef reachabilityRef;
@end
@implementation ASReachability
......@@ -34,7 +31,18 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkCurrentNetworkStatus) name:UIApplicationDidBecomeActiveNotification object:nil];
}return self;
}
-(NSString *)statusDesc{
switch (_status) {
case ASReachabilityStatusWWAN:
return @"蜂窝网络";
case ASReachabilityStatusWifi:
return @"WiFi";
case ASReachabilityStatusNotReachable:
return @"无网络";
default:
return @"未知";
}
}
-(void)startsObserving
{
if(_reachabilityRef){
......@@ -47,23 +55,26 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
}
// 初始化时检查网络状态
[self checkCurrentNetworkStatus];
if(!_reachabilityRef){
return;//maybe stop after first check
}
SCNetworkReachabilityContext context = {0, (__bridge void *)(self), NULL, NULL, NULL};
SCNetworkReachabilitySetCallback(self.reachabilityRef, ReachabilityCallback, &context);
SCNetworkReachabilityScheduleWithRunLoop(self.reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
SCNetworkReachabilityScheduleWithRunLoop(self.reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
}
-(void)stopObserving
{
if (_reachabilityRef) {
SCNetworkReachabilityUnscheduleFromRunLoop(_reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
SCNetworkReachabilityUnscheduleFromRunLoop(_reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
CFRelease(_reachabilityRef);
_reachabilityRef = NULL;
}
}
- (void)checkCurrentNetworkStatus {
if(!_reachabilityRef){return;}
SCNetworkReachabilityFlags flags;
if (SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags)) {
if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags)) {
[self handleNetworkChangeWithFlags:flags];
} else {
NSLog(@"Failed to retrieve network status");
......@@ -71,13 +82,9 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
}
// 处理网络状态变化
- (void)handleNetworkChangeWithFlags:(SCNetworkReachabilityFlags)flags {
if(_reachabilityFlags == flags){
return;
}
BOOL isReachable = (flags & kSCNetworkReachabilityFlagsReachable);
BOOL needsConnection = (flags & kSCNetworkReachabilityFlagsConnectionRequired);
if (isReachable && !needsConnection) {
NSLog(@"Network is reachable");
// 进一步检查网络类型
[self detectConnectionTypeWithFlags:flags];
} else {
......@@ -89,32 +96,29 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
} else if (isReachable && isTransient) {
NSLog(@"Network connection is transient (e.g., dial-up or other temporary connection)");
} else {
NSLog(@"Network is not reachable");
}
_status = ASReachabilityStatusNotReachable;
[self.delegate reachabilityBecomesNotReachable:self];
[self _notifyStatusChanged:ASReachabilityStatusNotReachable];
}
}
// 检测当前的网络连接类型(Wi-Fi 或 蜂窝)
- (void)detectConnectionTypeWithFlags:(SCNetworkReachabilityFlags)flags {
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) {
// 通过蜂窝网络连接
if(!_celluarService){_celluarService = [ASCellularNet new];}
[_celluarService updateNetworkInfo];
ASCellularNetType type = _celluarService.accessNet;
NSLog(@"Connected via Cellular of %ld",type);
_status = ASReachabilityStatusWifi;
[self.delegate reachabilityChangedToWWAN:self type:type signalStrength:_celluarService.signalStrength];
[self _notifyStatusChanged:ASReachabilityStatusWWAN];
} else {
// 通过Wi-Fi或其他网络连接
NSLog(@"Connected via Wi-Fi");
_status = ASReachabilityStatusWWAN;
[self.delegate reachabilityChangedToWiFi:self];
[self _notifyStatusChanged:ASReachabilityStatusWifi];
}
}
#pragma mark - Privates
- (void)_notifyStatusChanged:(ASReachabilityStatus)newStatus
{
if(_status == newStatus){return;}
_status = newStatus;
[self.delegate reachabilityStatusDidChanged:newStatus statusDesc:self.statusDesc];
}
- (SCNetworkReachabilityRef _Nullable)_createHostReachabilityRef
{
return _host ? SCNetworkReachabilityCreateWithName(NULL, _host.UTF8String) : nil;
......
PODS:
- ASNetwork (1.0.0)
- ASNetwork (1.0.2)
- CRMNetDetect (0.1.0):
- ASNetwork
......@@ -15,7 +15,7 @@ EXTERNAL SOURCES:
:path: "../"
SPEC CHECKSUMS:
ASNetwork: a1bdef0d07fc5c4c78cb01a380baaa812ee9944e
ASNetwork: 3beefd29932096032e386d1a949cb9255eda7d54
CRMNetDetect: 30b81d339ea6293c8cd2cee10d31197a4da7b16c
PODFILE CHECKSUM: f5247f2e9f0505f8db1736cd0e5716b42c1a2390
......
......@@ -7,105 +7,108 @@
objects = {
/* Begin PBXBuildFile section */
003DAD053B67F4E96AC9C9E67A768C03 /* ASReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = C1E6D0C4FB18C6D6431EAAC3A10FBB54 /* ASReachability.m */; };
0182D1F6F8D74FBB33DBE8821F1224A6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
0601166E28C72F90F2276392B59AD146 /* ASCellularNet.h in Headers */ = {isa = PBXBuildFile; fileRef = F32678F2F7F3FBE7C9E1CBF3FBB23D43 /* ASCellularNet.h */; settings = {ATTRIBUTES = (Public, ); }; };
0759EA8A5778BC7CC03A5B180330DE39 /* CRMNetDetectService.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA38106C1468035922EFF40E33C42EF /* CRMNetDetectService.h */; settings = {ATTRIBUTES = (Public, ); }; };
0BC398095BDF908174F734F0A5B30490 /* ASPingService.m in Sources */ = {isa = PBXBuildFile; fileRef = 532F7D87E60CB8F5619FDDAAF79DE5EE /* ASPingService.m */; };
14BEB6C65D940C41D58B5B4FDD16AD0B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
09F087208A8FBA17AF4A17F822E7A937 /* ASNetwork-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E60C51562ACD180CD8729CD55E29A2F /* ASNetwork-dummy.m */; };
19F1AB2A470E8F2DEAFE920F9F936388 /* Pods-CRMNetDetect_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 186EEDB427E8CA1149F1C265614A192D /* Pods-CRMNetDetect_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
280D51F7B751CB6E211E44E28FC22006 /* ASCellularNet.h in Headers */ = {isa = PBXBuildFile; fileRef = 45BC33229CF1EAAA5D97B20BCC94B24D /* ASCellularNet.h */; settings = {ATTRIBUTES = (Public, ); }; };
34E4979A2E09D56AEE25338C1A247E85 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
3C6035C86791F8E3D271589609A15D95 /* CRMNetDetectView.m in Sources */ = {isa = PBXBuildFile; fileRef = CAFC3EC1D9159057265FB7F3BA95E16F /* CRMNetDetectView.m */; };
3EE905EAA4464FACE6A771AD514258AA /* CRMNetDetect-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DDC3570D016FA0E67794B60565B2E91 /* CRMNetDetect-dummy.m */; };
4822D9961ECD750CD9292777BDC7ADB8 /* ASNetwork-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 62318D0AC2532E0308C27B5B224E42B7 /* ASNetwork-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
551B6A1D57E47DD969CEBB6531B48E89 /* net_detect_failed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 95A1CD61767EE4B7B0C64DB2BBEF51F9 /* net_detect_failed@2x.png */; };
55F7454BC0341805E984596DF7FE5AA0 /* ASPingService.h in Headers */ = {isa = PBXBuildFile; fileRef = AC816EC4E0E9E271F948726B8E22CB31 /* ASPingService.h */; settings = {ATTRIBUTES = (Public, ); }; };
481D866F11DE771D688EE60A6D26C782 /* net_detect_pass@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A260692E8EB3D163E37387954A3B0D81 /* net_detect_pass@2x.png */; };
57680C7B0152B1FA040EAE0980C086B9 /* CRMNetDetectService.m in Sources */ = {isa = PBXBuildFile; fileRef = 871C353049072AB9403FDDF483643930 /* CRMNetDetectService.m */; };
58742F2B879F3D68E8FCE527B08E136B /* Pods-CRMNetDetect_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BC43E13B2A1648689CA85FB31051D1FF /* Pods-CRMNetDetect_Tests-dummy.m */; };
5B4453FEC67F9115353D44BA6ED89A1B /* ASInterfaceService.m in Sources */ = {isa = PBXBuildFile; fileRef = E43A3CC965A836B1DD90B4E788309354 /* ASInterfaceService.m */; };
599CDB68E4C73417EF9B05F521D3C598 /* net_detect_failed@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 363292E4B144E0486D337B1395B71190 /* net_detect_failed@3x.png */; };
658E556AB72DE26C1158355E14594BA4 /* Pods-CRMNetDetect_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A78ACED08D358EF03D3B7DCEAA3FE17 /* Pods-CRMNetDetect_Example-dummy.m */; };
68744807F121194AF56230C2F8CB79D3 /* ASReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 260E70EE610BF822CFC44D14D8C2EF57 /* ASReachability.h */; settings = {ATTRIBUTES = (Public, ); }; };
6B7FA199909DE26625ECDA883099A436 /* ASPingService.h in Headers */ = {isa = PBXBuildFile; fileRef = A202A939DFD8334020302D18EAF65296 /* ASPingService.h */; settings = {ATTRIBUTES = (Public, ); }; };
6CD91756A9C6F9D7B90075474C8D5CF6 /* net_detect_pass@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9801A177E5A45F63107806CE9741CCDD /* net_detect_pass@3x.png */; };
75C1A12F293F44807E72BC05240323A2 /* CRMNetDetectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5392CC82A1F20946EE1E8158F7658728 /* CRMNetDetectView.h */; settings = {ATTRIBUTES = (Public, ); }; };
853F87BE89A5C654E6DA9C078DE42349 /* ASInterfaceService.h in Headers */ = {isa = PBXBuildFile; fileRef = 25CCBFD7DEC8AD3BD118335F65F246D3 /* ASInterfaceService.h */; settings = {ATTRIBUTES = (Public, ); }; };
7E26A33573151CC274C65BE86A13A526 /* ASSimplePing.m in Sources */ = {isa = PBXBuildFile; fileRef = CE73CFE6E445EBE30C7689672C7D29B4 /* ASSimplePing.m */; };
8255BE51966A5139B6500B82F2D40FC4 /* ASNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 36FE4F6D7F25DBAA05BDF19E6B68D51D /* ASNetwork.h */; settings = {ATTRIBUTES = (Public, ); }; };
89ABE3E8294AB483977218BE6CBF6832 /* CRMNetDetectCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 12B92BDDC196A946484D1792E028CDD0 /* CRMNetDetectCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
9205F91980BE432D0C0F0F2CFBF01C9F /* CRMNetDetect-CRMNetDetect in Resources */ = {isa = PBXBuildFile; fileRef = 60CF2BDA90EFCE95B6FE69244188E33E /* CRMNetDetect-CRMNetDetect */; };
9AFBF24D5E2C1EA433930F0A92F3CB66 /* ASSimplePing.h in Headers */ = {isa = PBXBuildFile; fileRef = C90D42039DF42BF425DC350B29F015BE /* ASSimplePing.h */; settings = {ATTRIBUTES = (Public, ); }; };
A3B650AA8366C9AF581E6250E0E71D85 /* ASNetwork-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0224456C32A44FE731231081DF378D11 /* ASNetwork-dummy.m */; };
9F7348982600720EA9C24E51B0B8D7FD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
A24AC593A92513D4DA7BA22991CA4E09 /* ASNetworkInterfaceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = F6CCE722800370FD6FCE9FAE5E05329A /* ASNetworkInterfaceInfo.m */; };
A80883438BE42A02329A0C9898DE58A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
B14CCAE6CECF9565036129AB4959200F /* net_detect_pass@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9801A177E5A45F63107806CE9741CCDD /* net_detect_pass@3x.png */; };
B695A161E2B3C4D52FBBD36CB0F0F6E5 /* CRMNetDetect-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D5F2CA5638742DAF1CDA603DF50A5A18 /* CRMNetDetect-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
B927E9A364153E3A51F49611461A7C34 /* ASNetwork-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CD93903DA86B7C7A174CD78AD8104F4 /* ASNetwork-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
C2AF253BB49D8A54683ED5CA6B8EF252 /* ASNetworkInterfaceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2973B23E04F06F9170282D28F35C75DD /* ASNetworkInterfaceInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
C6E001A2C56F40F31A7AE7D61877EBFC /* ASSimplePing.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D51BA2A590907EFA6CD4F45A0B4E5F7 /* ASSimplePing.h */; settings = {ATTRIBUTES = (Public, ); }; };
C866F42947C7B550184418CA9BD332A0 /* net_detect_failed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 95A1CD61767EE4B7B0C64DB2BBEF51F9 /* net_detect_failed@2x.png */; };
C9060CE39CBAB5DB116ADD75163F9F88 /* ASPingService.m in Sources */ = {isa = PBXBuildFile; fileRef = 00361E2CB78E40AD8EE13978CB94AF9A /* ASPingService.m */; };
CE627EB76AE4D46BEFBE9A9B24779D14 /* CRMNetDetectCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 209AC7DF981F0520620F0BA4750CF3A1 /* CRMNetDetectCell.m */; };
D10039F99E262E66B872CB7CD88AAE37 /* net_detect_failed@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 363292E4B144E0486D337B1395B71190 /* net_detect_failed@3x.png */; };
D581B6173EC09EC4D8EF0F346FC70CB7 /* ASCellularNet.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C796DF47AEF7D7D2F49E1E4A5E5D0F1 /* ASCellularNet.m */; };
DA7B5F335C3E3F157F716C68E253B3E5 /* ASSimplePing.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FF3DDA6D2AB3FCDC8D8D742E7D48818 /* ASSimplePing.m */; };
DF37E6AEF309333980A07130CF2BECF2 /* net_detect_pass.png in Resources */ = {isa = PBXBuildFile; fileRef = 71195FD0BE91B41C3DC1BF6206BF9F77 /* net_detect_pass.png */; };
E4B27C7335BB806D416A61AAC1B67D64 /* net_detect_pass@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A260692E8EB3D163E37387954A3B0D81 /* net_detect_pass@2x.png */; };
D4EBB2827200A0CEBDF253FA2E843C32 /* net_detect_pass.png in Resources */ = {isa = PBXBuildFile; fileRef = 71195FD0BE91B41C3DC1BF6206BF9F77 /* net_detect_pass.png */; };
D57117D38F0EFB3B62ADDD7FB74A3F78 /* ASCellularNet.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B699B1A4EDD9420222EA810C3AC7D0B /* ASCellularNet.m */; };
E9A11907AA90CADF1213F162F76E3884 /* Pods-CRMNetDetect_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7553B02EF8159F88857455120A6E09FC /* Pods-CRMNetDetect_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
EEB810A8ADD69EF12E4C74CB7325AFF6 /* ASReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A8E1A52D53665D84521183D71253529 /* ASReachability.h */; settings = {ATTRIBUTES = (Public, ); }; };
F05386B46734DA9F8469BDF79A6E377A /* net_detect_failed.png in Resources */ = {isa = PBXBuildFile; fileRef = E8AC717C2D8C27616E6EDDABB0FDE25D /* net_detect_failed.png */; };
FB098E1E9AF7C65D1882B552C6C7CF8A /* ASReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C24AC27A3015FF8A2809FF18EC2D210 /* ASReachability.m */; };
FC150187E5BED8232872FFE8BE09C5E3 /* net_detect_failed.png in Resources */ = {isa = PBXBuildFile; fileRef = E8AC717C2D8C27616E6EDDABB0FDE25D /* net_detect_failed.png */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
084BC1130FA68140D31ADF38E58963F2 /* PBXContainerItemProxy */ = {
37E4053D44FC62F2990128BE069E1D4A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4229E2C28F5E1B68E4A4FA09010F4E1A;
remoteInfo = ASNetwork;
};
3CA90646F52D1F95EBDBE27180398741 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = A15DBD8B0E93908127568265727CF1A6;
remoteInfo = CRMNetDetect;
remoteGlobalIDString = 5F9B27A55448F371B87234C2ABC2B1F0;
remoteInfo = "Pods-CRMNetDetect_Example";
};
547C2CCE0143DC9B35FAE14317F423DA /* PBXContainerItemProxy */ = {
4546F00B38A33E081325948913F5EBF3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = A5F2F5F33D62055C81B80FCC498842BB;
remoteInfo = "CRMNetDetect-CRMNetDetect";
};
7799BAF4A4F6F3BB70AF9774BB005E75 /* PBXContainerItemProxy */ = {
479667F2A46500932514067419507273 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 5F9B27A55448F371B87234C2ABC2B1F0;
remoteInfo = "Pods-CRMNetDetect_Example";
remoteGlobalIDString = 4229E2C28F5E1B68E4A4FA09010F4E1A;
remoteInfo = ASNetwork;
};
E57E37C515A4332A64D16AC31501F011 /* PBXContainerItemProxy */ = {
A85345BD8D84F82BF683E179085076FB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4229E2C28F5E1B68E4A4FA09010F4E1A;
remoteInfo = ASNetwork;
};
B084BCFB0EF302D795099D05937BB28E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = A15DBD8B0E93908127568265727CF1A6;
remoteInfo = CRMNetDetect;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0224456C32A44FE731231081DF378D11 /* ASNetwork-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ASNetwork-dummy.m"; sourceTree = "<group>"; };
0C796DF47AEF7D7D2F49E1E4A5E5D0F1 /* ASCellularNet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASCellularNet.m; path = ASNetwork/Classes/ASCellularNet.m; sourceTree = "<group>"; };
11EA24796DE6A14D89F51C94DDB61E29 /* ASNetwork.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ASNetwork.modulemap; sourceTree = "<group>"; };
00361E2CB78E40AD8EE13978CB94AF9A /* ASPingService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASPingService.m; path = ASNetwork/Classes/ASPingService.m; sourceTree = "<group>"; };
0617A68E7FE388BA2C60864B413737EF /* ASNetwork.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ASNetwork.modulemap; sourceTree = "<group>"; };
121CC8C9E7C0A6132A5EDA9C24C7C6AC /* ASNetwork-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ASNetwork-Info.plist"; sourceTree = "<group>"; };
12B92BDDC196A946484D1792E028CDD0 /* CRMNetDetectCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CRMNetDetectCell.h; path = CRMNetDetect/Classes/CRMNetDetectCell.h; sourceTree = "<group>"; };
186EEDB427E8CA1149F1C265614A192D /* Pods-CRMNetDetect_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CRMNetDetect_Example-umbrella.h"; sourceTree = "<group>"; };
19EC0A01224DD4CA2FC046F5AC666B32 /* ASNetwork.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ASNetwork.release.xcconfig; sourceTree = "<group>"; };
1CD93903DA86B7C7A174CD78AD8104F4 /* ASNetwork-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ASNetwork-umbrella.h"; sourceTree = "<group>"; };
209AC7DF981F0520620F0BA4750CF3A1 /* CRMNetDetectCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CRMNetDetectCell.m; path = CRMNetDetect/Classes/CRMNetDetectCell.m; sourceTree = "<group>"; };
20FAFD359BCB1B046D43AFB541C52903 /* CRMNetDetect */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CRMNetDetect; path = CRMNetDetect.framework; sourceTree = BUILT_PRODUCTS_DIR; };
249FC6845EF9F3486FC0E98C949002DC /* Pods-CRMNetDetect_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CRMNetDetect_Example-acknowledgements.plist"; sourceTree = "<group>"; };
25CCBFD7DEC8AD3BD118335F65F246D3 /* ASInterfaceService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASInterfaceService.h; path = ASNetwork/Classes/ASInterfaceService.h; sourceTree = "<group>"; };
260E70EE610BF822CFC44D14D8C2EF57 /* ASReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASReachability.h; path = ASNetwork/Classes/ASReachability.h; sourceTree = "<group>"; };
2973B23E04F06F9170282D28F35C75DD /* ASNetworkInterfaceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASNetworkInterfaceInfo.h; path = ASNetwork/Classes/ASNetworkInterfaceInfo.h; sourceTree = "<group>"; };
2A78ACED08D358EF03D3B7DCEAA3FE17 /* Pods-CRMNetDetect_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CRMNetDetect_Example-dummy.m"; sourceTree = "<group>"; };
2A8E1A52D53665D84521183D71253529 /* ASReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASReachability.h; path = ASNetwork/Classes/ASReachability.h; sourceTree = "<group>"; };
2FF3DDA6D2AB3FCDC8D8D742E7D48818 /* ASSimplePing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASSimplePing.m; path = ASNetwork/Classes/ASSimplePing.m; sourceTree = "<group>"; };
363292E4B144E0486D337B1395B71190 /* net_detect_failed@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "net_detect_failed@3x.png"; path = "CRMNetDetect/Assets/net_detect_failed@3x.png"; sourceTree = "<group>"; };
36FE4F6D7F25DBAA05BDF19E6B68D51D /* ASNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASNetwork.h; path = ASNetwork/Classes/ASNetwork.h; sourceTree = "<group>"; };
3E60C51562ACD180CD8729CD55E29A2F /* ASNetwork-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ASNetwork-dummy.m"; sourceTree = "<group>"; };
45BC33229CF1EAAA5D97B20BCC94B24D /* ASCellularNet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASCellularNet.h; path = ASNetwork/Classes/ASCellularNet.h; sourceTree = "<group>"; };
4DBD55E0A47BDBA36E99F131FB496B80 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
52C2836BBB5E627C56BA80E2E6D291AF /* CRMNetDetect.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CRMNetDetect.modulemap; sourceTree = "<group>"; };
532F7D87E60CB8F5619FDDAAF79DE5EE /* ASPingService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASPingService.m; path = ASNetwork/Classes/ASPingService.m; sourceTree = "<group>"; };
5392CC82A1F20946EE1E8158F7658728 /* CRMNetDetectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CRMNetDetectView.h; path = CRMNetDetect/Classes/CRMNetDetectView.h; sourceTree = "<group>"; };
5BF6BCC1EDCCA9ECDB3F0659E978CEDE /* CRMNetDetect.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CRMNetDetect.release.xcconfig; sourceTree = "<group>"; };
5E0FFAF5411BB08D1F3004724017D4F3 /* ASNetwork.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ASNetwork.debug.xcconfig; sourceTree = "<group>"; };
60CF2BDA90EFCE95B6FE69244188E33E /* CRMNetDetect-CRMNetDetect */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "CRMNetDetect-CRMNetDetect"; path = CRMNetDetect.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
62318D0AC2532E0308C27B5B224E42B7 /* ASNetwork-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ASNetwork-umbrella.h"; sourceTree = "<group>"; };
6402D858A3698838D279BFD4D96E85EB /* Pods-CRMNetDetect_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CRMNetDetect_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
64B293762EE2AFE00ECA3792BCE256C3 /* Pods-CRMNetDetect_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CRMNetDetect_Tests-Info.plist"; sourceTree = "<group>"; };
6D51BA2A590907EFA6CD4F45A0B4E5F7 /* ASSimplePing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASSimplePing.h; path = ASNetwork/Classes/ASSimplePing.h; sourceTree = "<group>"; };
71195FD0BE91B41C3DC1BF6206BF9F77 /* net_detect_pass.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = net_detect_pass.png; path = CRMNetDetect/Assets/net_detect_pass.png; sourceTree = "<group>"; };
7247F47BB6FC7899C1B4AE6F1E44FF62 /* ResourceBundle-CRMNetDetect-CRMNetDetect-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-CRMNetDetect-CRMNetDetect-Info.plist"; sourceTree = "<group>"; };
724EC8EFAA0A941B58EC282E4E23F59F /* ASNetwork */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ASNetwork; path = ASNetwork.framework; sourceTree = BUILT_PRODUCTS_DIR; };
......@@ -114,6 +117,7 @@
76C611B2F70AD862779DB44B7136AC22 /* CRMNetDetect.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CRMNetDetect.debug.xcconfig; sourceTree = "<group>"; };
7855F1FE5AB2BC9EC87F0E77CF9B5D2D /* Pods-CRMNetDetect_Tests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CRMNetDetect_Tests"; path = Pods_CRMNetDetect_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
78E575167A6F0271FDD952DBB5682C8C /* Pods-CRMNetDetect_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CRMNetDetect_Example-frameworks.sh"; sourceTree = "<group>"; };
7C24AC27A3015FF8A2809FF18EC2D210 /* ASReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASReachability.m; path = ASNetwork/Classes/ASReachability.m; sourceTree = "<group>"; };
871C353049072AB9403FDDF483643930 /* CRMNetDetectService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CRMNetDetectService.m; path = CRMNetDetect/Classes/CRMNetDetectService.m; sourceTree = "<group>"; };
89229355210BC0CA6D3D8BF572D1C51B /* Pods-CRMNetDetect_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CRMNetDetect_Tests.modulemap"; sourceTree = "<group>"; };
8DDC3570D016FA0E67794B60565B2E91 /* CRMNetDetect-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CRMNetDetect-dummy.m"; sourceTree = "<group>"; };
......@@ -121,31 +125,29 @@
95A1CD61767EE4B7B0C64DB2BBEF51F9 /* net_detect_failed@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "net_detect_failed@2x.png"; path = "CRMNetDetect/Assets/net_detect_failed@2x.png"; sourceTree = "<group>"; };
96ADD43625E0F4EA7A47048CF23BD154 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
9801A177E5A45F63107806CE9741CCDD /* net_detect_pass@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "net_detect_pass@3x.png"; path = "CRMNetDetect/Assets/net_detect_pass@3x.png"; sourceTree = "<group>"; };
9B699B1A4EDD9420222EA810C3AC7D0B /* ASCellularNet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASCellularNet.m; path = ASNetwork/Classes/ASCellularNet.m; sourceTree = "<group>"; };
9D2A0FFFFFA3D084D8BB354D35A94B3D /* Pods-CRMNetDetect_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CRMNetDetect_Example"; path = Pods_CRMNetDetect_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
9EC2E9CEE4C472DC6E5F5D139652C2D7 /* Pods-CRMNetDetect_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CRMNetDetect_Example.release.xcconfig"; sourceTree = "<group>"; };
A1D9B9036D96EE06017A3771197AB0A1 /* ASNetwork.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ASNetwork.debug.xcconfig; sourceTree = "<group>"; };
A202A939DFD8334020302D18EAF65296 /* ASPingService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASPingService.h; path = ASNetwork/Classes/ASPingService.h; sourceTree = "<group>"; };
A23B9A0181B4EF9D2D3AEF029B2AEE98 /* CRMNetDetect-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CRMNetDetect-Info.plist"; sourceTree = "<group>"; };
A260692E8EB3D163E37387954A3B0D81 /* net_detect_pass@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "net_detect_pass@2x.png"; path = "CRMNetDetect/Assets/net_detect_pass@2x.png"; sourceTree = "<group>"; };
A410666D2F14440EE4573B9FD919E2D1 /* Pods-CRMNetDetect_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CRMNetDetect_Tests.release.xcconfig"; sourceTree = "<group>"; };
A504DE2C3CF20D9C7F19C8B7691DEC40 /* ASNetwork-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ASNetwork-Info.plist"; sourceTree = "<group>"; };
A6D51645AD8077B2D8D033AE766558FF /* CRMNetDetect-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CRMNetDetect-prefix.pch"; sourceTree = "<group>"; };
AC816EC4E0E9E271F948726B8E22CB31 /* ASPingService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASPingService.h; path = ASNetwork/Classes/ASPingService.h; sourceTree = "<group>"; };
B0B563F8B99ABAB3F9546A82AE5D5194 /* Pods-CRMNetDetect_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CRMNetDetect_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
B32524E44CDF1EF61A537141C79E97A5 /* Pods-CRMNetDetect_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CRMNetDetect_Example.debug.xcconfig"; sourceTree = "<group>"; };
B3348800E2B3139E3A776D8EE2A33118 /* ASNetwork-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ASNetwork-prefix.pch"; sourceTree = "<group>"; };
BC43E13B2A1648689CA85FB31051D1FF /* Pods-CRMNetDetect_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CRMNetDetect_Tests-dummy.m"; sourceTree = "<group>"; };
BCA38106C1468035922EFF40E33C42EF /* CRMNetDetectService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CRMNetDetectService.h; path = CRMNetDetect/Classes/CRMNetDetectService.h; sourceTree = "<group>"; };
C1E6D0C4FB18C6D6431EAAC3A10FBB54 /* ASReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASReachability.m; path = ASNetwork/Classes/ASReachability.m; sourceTree = "<group>"; };
C4ECF0070DAC1A794BA7BD296C38003A /* Pods-CRMNetDetect_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CRMNetDetect_Tests.debug.xcconfig"; sourceTree = "<group>"; };
C90D42039DF42BF425DC350B29F015BE /* ASSimplePing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASSimplePing.h; path = ASNetwork/Classes/ASSimplePing.h; sourceTree = "<group>"; };
C90FDAE52818226A1BD447A711FCFA8D /* ASNetwork-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ASNetwork-prefix.pch"; sourceTree = "<group>"; };
CA264FEEA78EC9757ED9BD7060FDB76D /* Pods-CRMNetDetect_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CRMNetDetect_Example-Info.plist"; sourceTree = "<group>"; };
CAFC3EC1D9159057265FB7F3BA95E16F /* CRMNetDetectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CRMNetDetectView.m; path = CRMNetDetect/Classes/CRMNetDetectView.m; sourceTree = "<group>"; };
CE73CFE6E445EBE30C7689672C7D29B4 /* ASSimplePing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASSimplePing.m; path = ASNetwork/Classes/ASSimplePing.m; sourceTree = "<group>"; };
D2BD803EE3DCEE5861582A0FF05CC0E3 /* ASNetwork.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ASNetwork.release.xcconfig; sourceTree = "<group>"; };
D5F2CA5638742DAF1CDA603DF50A5A18 /* CRMNetDetect-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CRMNetDetect-umbrella.h"; sourceTree = "<group>"; };
E43A3CC965A836B1DD90B4E788309354 /* ASInterfaceService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASInterfaceService.m; path = ASNetwork/Classes/ASInterfaceService.m; sourceTree = "<group>"; };
E8AC717C2D8C27616E6EDDABB0FDE25D /* net_detect_failed.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = net_detect_failed.png; path = CRMNetDetect/Assets/net_detect_failed.png; sourceTree = "<group>"; };
F0D50D828266A69AE323AA3AEDADD89A /* Pods-CRMNetDetect_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CRMNetDetect_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
F32678F2F7F3FBE7C9E1CBF3FBB23D43 /* ASCellularNet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ASCellularNet.h; path = ASNetwork/Classes/ASCellularNet.h; sourceTree = "<group>"; };
F6CCE722800370FD6FCE9FAE5E05329A /* ASNetworkInterfaceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ASNetworkInterfaceInfo.m; path = ASNetwork/Classes/ASNetworkInterfaceInfo.m; sourceTree = "<group>"; };
F81C5CF683443FFC42D9E1228D7B5A62 /* Pods-CRMNetDetect_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CRMNetDetect_Example.modulemap"; sourceTree = "<group>"; };
/* End PBXFileReference section */
......@@ -158,18 +160,18 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
0A01F1AB306E9CA153D12C99E37D66A7 /* Frameworks */ = {
3CABAABB91A5EA5721825B3E773BD496 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9F7348982600720EA9C24E51B0B8D7FD /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
B09FB12A94A49A9D0D8B9E0B8B373168 /* Frameworks */ = {
BB9043725CAF5C18D64D115BE6558830 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
14BEB6C65D940C41D58B5B4FDD16AD0B /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -192,6 +194,26 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0B02AEB94A440E1D53E4C33387FC6707 /* ASNetwork */ = {
isa = PBXGroup;
children = (
45BC33229CF1EAAA5D97B20BCC94B24D /* ASCellularNet.h */,
9B699B1A4EDD9420222EA810C3AC7D0B /* ASCellularNet.m */,
36FE4F6D7F25DBAA05BDF19E6B68D51D /* ASNetwork.h */,
2973B23E04F06F9170282D28F35C75DD /* ASNetworkInterfaceInfo.h */,
F6CCE722800370FD6FCE9FAE5E05329A /* ASNetworkInterfaceInfo.m */,
A202A939DFD8334020302D18EAF65296 /* ASPingService.h */,
00361E2CB78E40AD8EE13978CB94AF9A /* ASPingService.m */,
260E70EE610BF822CFC44D14D8C2EF57 /* ASReachability.h */,
7C24AC27A3015FF8A2809FF18EC2D210 /* ASReachability.m */,
6D51BA2A590907EFA6CD4F45A0B4E5F7 /* ASSimplePing.h */,
CE73CFE6E445EBE30C7689672C7D29B4 /* ASSimplePing.m */,
821733C8CF8F033ED699C913534A7C3C /* Support Files */,
);
name = ASNetwork;
path = ASNetwork;
sourceTree = "<group>";
};
0F729FD121E60609B439AEA6E028550F /* Support Files */ = {
isa = PBXGroup;
children = (
......@@ -230,10 +252,10 @@
path = ../..;
sourceTree = "<group>";
};
3D8944D3819921F1FB528CDD525D95BC /* Pods */ = {
3E52005FB880D4C8B6253F05F8A4D6D7 /* Pods */ = {
isa = PBXGroup;
children = (
AF3BC2781304B544AD26994AC2DDF2E6 /* ASNetwork */,
0B02AEB94A440E1D53E4C33387FC6707 /* ASNetwork */,
);
name = Pods;
sourceTree = "<group>";
......@@ -262,29 +284,29 @@
path = "Target Support Files/Pods-CRMNetDetect_Tests";
sourceTree = "<group>";
};
8432ABCEA19F55EDEF3D2319AB16EF9F /* Pod */ = {
821733C8CF8F033ED699C913534A7C3C /* Support Files */ = {
isa = PBXGroup;
children = (
927EB62DC7415134EC5F21DC4ED17E21 /* CRMNetDetect.podspec */,
96ADD43625E0F4EA7A47048CF23BD154 /* LICENSE */,
4DBD55E0A47BDBA36E99F131FB496B80 /* README.md */,
0617A68E7FE388BA2C60864B413737EF /* ASNetwork.modulemap */,
3E60C51562ACD180CD8729CD55E29A2F /* ASNetwork-dummy.m */,
121CC8C9E7C0A6132A5EDA9C24C7C6AC /* ASNetwork-Info.plist */,
B3348800E2B3139E3A776D8EE2A33118 /* ASNetwork-prefix.pch */,
1CD93903DA86B7C7A174CD78AD8104F4 /* ASNetwork-umbrella.h */,
5E0FFAF5411BB08D1F3004724017D4F3 /* ASNetwork.debug.xcconfig */,
D2BD803EE3DCEE5861582A0FF05CC0E3 /* ASNetwork.release.xcconfig */,
);
name = Pod;
name = "Support Files";
path = "../Target Support Files/ASNetwork";
sourceTree = "<group>";
};
9740E25F6135FAF8EDF2400DE317A14C /* Support Files */ = {
8432ABCEA19F55EDEF3D2319AB16EF9F /* Pod */ = {
isa = PBXGroup;
children = (
11EA24796DE6A14D89F51C94DDB61E29 /* ASNetwork.modulemap */,
0224456C32A44FE731231081DF378D11 /* ASNetwork-dummy.m */,
A504DE2C3CF20D9C7F19C8B7691DEC40 /* ASNetwork-Info.plist */,
C90FDAE52818226A1BD447A711FCFA8D /* ASNetwork-prefix.pch */,
62318D0AC2532E0308C27B5B224E42B7 /* ASNetwork-umbrella.h */,
A1D9B9036D96EE06017A3771197AB0A1 /* ASNetwork.debug.xcconfig */,
19EC0A01224DD4CA2FC046F5AC666B32 /* ASNetwork.release.xcconfig */,
927EB62DC7415134EC5F21DC4ED17E21 /* CRMNetDetect.podspec */,
96ADD43625E0F4EA7A47048CF23BD154 /* LICENSE */,
4DBD55E0A47BDBA36E99F131FB496B80 /* README.md */,
);
name = "Support Files";
path = "../Target Support Files/ASNetwork";
name = Pod;
sourceTree = "<group>";
};
9C64A66DE216404EE852FB1B3F2CCFD2 /* Development Pods */ = {
......@@ -295,25 +317,6 @@
name = "Development Pods";
sourceTree = "<group>";
};
AF3BC2781304B544AD26994AC2DDF2E6 /* ASNetwork */ = {
isa = PBXGroup;
children = (
F32678F2F7F3FBE7C9E1CBF3FBB23D43 /* ASCellularNet.h */,
0C796DF47AEF7D7D2F49E1E4A5E5D0F1 /* ASCellularNet.m */,
25CCBFD7DEC8AD3BD118335F65F246D3 /* ASInterfaceService.h */,
E43A3CC965A836B1DD90B4E788309354 /* ASInterfaceService.m */,
AC816EC4E0E9E271F948726B8E22CB31 /* ASPingService.h */,
532F7D87E60CB8F5619FDDAAF79DE5EE /* ASPingService.m */,
2A8E1A52D53665D84521183D71253529 /* ASReachability.h */,
C1E6D0C4FB18C6D6431EAAC3A10FBB54 /* ASReachability.m */,
C90D42039DF42BF425DC350B29F015BE /* ASSimplePing.h */,
2FF3DDA6D2AB3FCDC8D8D742E7D48818 /* ASSimplePing.m */,
9740E25F6135FAF8EDF2400DE317A14C /* Support Files */,
);
name = ASNetwork;
path = ASNetwork;
sourceTree = "<group>";
};
B35CD1E2CF2D27F0BA7DE5EDFDC02F00 /* Pods-CRMNetDetect_Example */ = {
isa = PBXGroup;
children = (
......@@ -346,7 +349,7 @@
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
9C64A66DE216404EE852FB1B3F2CCFD2 /* Development Pods */,
D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
3D8944D3819921F1FB528CDD525D95BC /* Pods */,
3E52005FB880D4C8B6253F05F8A4D6D7 /* Pods */,
E74EB540587E1710A21504DC73C11833 /* Products */,
CEEBEA2B1E690E681726D3DA7F862C22 /* Targets Support Files */,
);
......@@ -394,16 +397,17 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AB45D6784DE2A733121047B1B7A2AF92 /* Headers */ = {
2C6A168DD2B565DF5958E81C634A5DF2 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
0601166E28C72F90F2276392B59AD146 /* ASCellularNet.h in Headers */,
853F87BE89A5C654E6DA9C078DE42349 /* ASInterfaceService.h in Headers */,
4822D9961ECD750CD9292777BDC7ADB8 /* ASNetwork-umbrella.h in Headers */,
55F7454BC0341805E984596DF7FE5AA0 /* ASPingService.h in Headers */,
EEB810A8ADD69EF12E4C74CB7325AFF6 /* ASReachability.h in Headers */,
9AFBF24D5E2C1EA433930F0A92F3CB66 /* ASSimplePing.h in Headers */,
280D51F7B751CB6E211E44E28FC22006 /* ASCellularNet.h in Headers */,
8255BE51966A5139B6500B82F2D40FC4 /* ASNetwork.h in Headers */,
B927E9A364153E3A51F49611461A7C34 /* ASNetwork-umbrella.h in Headers */,
C2AF253BB49D8A54683ED5CA6B8EF252 /* ASNetworkInterfaceInfo.h in Headers */,
6B7FA199909DE26625ECDA883099A436 /* ASPingService.h in Headers */,
68744807F121194AF56230C2F8CB79D3 /* ASReachability.h in Headers */,
C6E001A2C56F40F31A7AE7D61877EBFC /* ASSimplePing.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -430,7 +434,7 @@
buildRules = (
);
dependencies = (
3EBE504A931FF39630D9901CA7A0E9CD /* PBXTargetDependency */,
CB37A278FAB535F432DFE639834844C4 /* PBXTargetDependency */,
);
name = "Pods-CRMNetDetect_Tests";
productName = Pods_CRMNetDetect_Tests;
......@@ -439,12 +443,12 @@
};
4229E2C28F5E1B68E4A4FA09010F4E1A /* ASNetwork */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8424760FB88E2F0EF63142CF5E524C4D /* Build configuration list for PBXNativeTarget "ASNetwork" */;
buildConfigurationList = 7B5D973D61FFC2D0CB0ECCF4B795A14A /* Build configuration list for PBXNativeTarget "ASNetwork" */;
buildPhases = (
AB45D6784DE2A733121047B1B7A2AF92 /* Headers */,
F2012C30A41026C0B653B62509A01BE8 /* Sources */,
B09FB12A94A49A9D0D8B9E0B8B373168 /* Frameworks */,
920512CD95FCCE62B1C7C39D88B1E0AE /* Resources */,
2C6A168DD2B565DF5958E81C634A5DF2 /* Headers */,
56FDDB7B48BE07BC2FBD04CE7A18FBCF /* Sources */,
3CABAABB91A5EA5721825B3E773BD496 /* Frameworks */,
40E8DCB275B34C5681BB12AF990726F8 /* Resources */,
);
buildRules = (
);
......@@ -467,8 +471,8 @@
buildRules = (
);
dependencies = (
9CB734C22ABFF18D583F40012C092EEA /* PBXTargetDependency */,
F82FA0F462C5B7C1426616B2DE32D818 /* PBXTargetDependency */,
9E4CF31019456DE22BB28E24E895FA56 /* PBXTargetDependency */,
2B1734FA26E75A6632E1E406A555E376 /* PBXTargetDependency */,
);
name = "Pods-CRMNetDetect_Example";
productName = Pods_CRMNetDetect_Example;
......@@ -487,8 +491,8 @@
buildRules = (
);
dependencies = (
3ED7B2FF79FB341A432E60D582063587 /* PBXTargetDependency */,
72A57F0883B2A2120EF2B3C651DCA5D2 /* PBXTargetDependency */,
AE4C54823F37F929E9872EDDAC93FA06 /* PBXTargetDependency */,
806D357C00EF81F97408BF27F7853F7B /* PBXTargetDependency */,
);
name = CRMNetDetect;
productName = CRMNetDetect;
......@@ -497,11 +501,11 @@
};
A5F2F5F33D62055C81B80FCC498842BB /* CRMNetDetect-CRMNetDetect */ = {
isa = PBXNativeTarget;
buildConfigurationList = F568D4A99D7AC76CE9B7CF589755F094 /* Build configuration list for PBXNativeTarget "CRMNetDetect-CRMNetDetect" */;
buildConfigurationList = F0BB3B8E99536E79E315DAAACEE5DE82 /* Build configuration list for PBXNativeTarget "CRMNetDetect-CRMNetDetect" */;
buildPhases = (
BBC4D17E037A3F07FC2FAC6B2C6C9661 /* Sources */,
0A01F1AB306E9CA153D12C99E37D66A7 /* Frameworks */,
B83522CD820DC6F70214DB3C9A006B35 /* Resources */,
D487328ED6CDE500594F78E2F0EEEBD9 /* Sources */,
BB9043725CAF5C18D64D115BE6558830 /* Frameworks */,
74530245978055EBC04CD297B764398C /* Resources */,
);
buildRules = (
);
......@@ -544,38 +548,38 @@
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
4F49610CBC92B3AE946CF1B34D09002E /* Resources */ = {
40E8DCB275B34C5681BB12AF990726F8 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9205F91980BE432D0C0F0F2CFBF01C9F /* CRMNetDetect-CRMNetDetect in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
841D5FB61EFE2CE0A8EBBDC36D0445CB /* Resources */ = {
4F49610CBC92B3AE946CF1B34D09002E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9205F91980BE432D0C0F0F2CFBF01C9F /* CRMNetDetect-CRMNetDetect in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
920512CD95FCCE62B1C7C39D88B1E0AE /* Resources */ = {
74530245978055EBC04CD297B764398C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FC150187E5BED8232872FFE8BE09C5E3 /* net_detect_failed.png in Resources */,
C866F42947C7B550184418CA9BD332A0 /* net_detect_failed@2x.png in Resources */,
599CDB68E4C73417EF9B05F521D3C598 /* net_detect_failed@3x.png in Resources */,
D4EBB2827200A0CEBDF253FA2E843C32 /* net_detect_pass.png in Resources */,
481D866F11DE771D688EE60A6D26C782 /* net_detect_pass@2x.png in Resources */,
6CD91756A9C6F9D7B90075474C8D5CF6 /* net_detect_pass@3x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
B83522CD820DC6F70214DB3C9A006B35 /* Resources */ = {
841D5FB61EFE2CE0A8EBBDC36D0445CB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F05386B46734DA9F8469BDF79A6E377A /* net_detect_failed.png in Resources */,
551B6A1D57E47DD969CEBB6531B48E89 /* net_detect_failed@2x.png in Resources */,
D10039F99E262E66B872CB7CD88AAE37 /* net_detect_failed@3x.png in Resources */,
DF37E6AEF309333980A07130CF2BECF2 /* net_detect_pass.png in Resources */,
E4B27C7335BB806D416A61AAC1B67D64 /* net_detect_pass@2x.png in Resources */,
B14CCAE6CECF9565036129AB4959200F /* net_detect_pass@3x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -600,74 +604,74 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
5E53F82CE77690ABC6F74EBFFAEC2643 /* Sources */ = {
56FDDB7B48BE07BC2FBD04CE7A18FBCF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
658E556AB72DE26C1158355E14594BA4 /* Pods-CRMNetDetect_Example-dummy.m in Sources */,
D57117D38F0EFB3B62ADDD7FB74A3F78 /* ASCellularNet.m in Sources */,
09F087208A8FBA17AF4A17F822E7A937 /* ASNetwork-dummy.m in Sources */,
A24AC593A92513D4DA7BA22991CA4E09 /* ASNetworkInterfaceInfo.m in Sources */,
C9060CE39CBAB5DB116ADD75163F9F88 /* ASPingService.m in Sources */,
FB098E1E9AF7C65D1882B552C6C7CF8A /* ASReachability.m in Sources */,
7E26A33573151CC274C65BE86A13A526 /* ASSimplePing.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8F00D2EEC8831C15A7F71DE4ACBB7463 /* Sources */ = {
5E53F82CE77690ABC6F74EBFFAEC2643 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
58742F2B879F3D68E8FCE527B08E136B /* Pods-CRMNetDetect_Tests-dummy.m in Sources */,
658E556AB72DE26C1158355E14594BA4 /* Pods-CRMNetDetect_Example-dummy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BBC4D17E037A3F07FC2FAC6B2C6C9661 /* Sources */ = {
8F00D2EEC8831C15A7F71DE4ACBB7463 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
58742F2B879F3D68E8FCE527B08E136B /* Pods-CRMNetDetect_Tests-dummy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F2012C30A41026C0B653B62509A01BE8 /* Sources */ = {
D487328ED6CDE500594F78E2F0EEEBD9 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D581B6173EC09EC4D8EF0F346FC70CB7 /* ASCellularNet.m in Sources */,
5B4453FEC67F9115353D44BA6ED89A1B /* ASInterfaceService.m in Sources */,
A3B650AA8366C9AF581E6250E0E71D85 /* ASNetwork-dummy.m in Sources */,
0BC398095BDF908174F734F0A5B30490 /* ASPingService.m in Sources */,
003DAD053B67F4E96AC9C9E67A768C03 /* ASReachability.m in Sources */,
DA7B5F335C3E3F157F716C68E253B3E5 /* ASSimplePing.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
3EBE504A931FF39630D9901CA7A0E9CD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "Pods-CRMNetDetect_Example";
target = 5F9B27A55448F371B87234C2ABC2B1F0 /* Pods-CRMNetDetect_Example */;
targetProxy = 7799BAF4A4F6F3BB70AF9774BB005E75 /* PBXContainerItemProxy */;
};
3ED7B2FF79FB341A432E60D582063587 /* PBXTargetDependency */ = {
2B1734FA26E75A6632E1E406A555E376 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = ASNetwork;
target = 4229E2C28F5E1B68E4A4FA09010F4E1A /* ASNetwork */;
targetProxy = 084BC1130FA68140D31ADF38E58963F2 /* PBXContainerItemProxy */;
name = CRMNetDetect;
target = A15DBD8B0E93908127568265727CF1A6 /* CRMNetDetect */;
targetProxy = B084BCFB0EF302D795099D05937BB28E /* PBXContainerItemProxy */;
};
72A57F0883B2A2120EF2B3C651DCA5D2 /* PBXTargetDependency */ = {
806D357C00EF81F97408BF27F7853F7B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "CRMNetDetect-CRMNetDetect";
target = A5F2F5F33D62055C81B80FCC498842BB /* CRMNetDetect-CRMNetDetect */;
targetProxy = 547C2CCE0143DC9B35FAE14317F423DA /* PBXContainerItemProxy */;
targetProxy = 4546F00B38A33E081325948913F5EBF3 /* PBXContainerItemProxy */;
};
9CB734C22ABFF18D583F40012C092EEA /* PBXTargetDependency */ = {
9E4CF31019456DE22BB28E24E895FA56 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = ASNetwork;
target = 4229E2C28F5E1B68E4A4FA09010F4E1A /* ASNetwork */;
targetProxy = E57E37C515A4332A64D16AC31501F011 /* PBXContainerItemProxy */;
targetProxy = 479667F2A46500932514067419507273 /* PBXContainerItemProxy */;
};
F82FA0F462C5B7C1426616B2DE32D818 /* PBXTargetDependency */ = {
AE4C54823F37F929E9872EDDAC93FA06 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = CRMNetDetect;
target = A15DBD8B0E93908127568265727CF1A6 /* CRMNetDetect */;
targetProxy = 3CA90646F52D1F95EBDBE27180398741 /* PBXContainerItemProxy */;
name = ASNetwork;
target = 4229E2C28F5E1B68E4A4FA09010F4E1A /* ASNetwork */;
targetProxy = A85345BD8D84F82BF683E179085076FB /* PBXContainerItemProxy */;
};
CB37A278FAB535F432DFE639834844C4 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "Pods-CRMNetDetect_Example";
target = 5F9B27A55448F371B87234C2ABC2B1F0 /* Pods-CRMNetDetect_Example */;
targetProxy = 37E4053D44FC62F2990128BE069E1D4A /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
......@@ -705,59 +709,9 @@
};
name = Debug;
};
210136FF5C335264D60BA040C3721C32 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5BF6BCC1EDCCA9ECDB3F0659E978CEDE /* CRMNetDetect.release.xcconfig */;
buildSettings = {
CODE_SIGNING_ALLOWED = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CRMNetDetect";
IBSC_MODULE = CRMNetDetect;
INFOPLIST_FILE = "Target Support Files/CRMNetDetect/ResourceBundle-CRMNetDetect-CRMNetDetect-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
PRODUCT_NAME = CRMNetDetect;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
WRAPPER_EXTENSION = bundle;
};
name = Release;
};
4E9D97466B80B3D01C74572651BEA5FE /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = C4ECF0070DAC1A794BA7BD296C38003A /* Pods-CRMNetDetect_Tests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Target Support Files/Pods-CRMNetDetect_Tests/Pods-CRMNetDetect_Tests-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-CRMNetDetect_Tests/Pods-CRMNetDetect_Tests.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
53C5466173A5B6427A64D4E51BAFB684 /* Release */ = {
3F718BA1DAA6E9916267C1AC7B77B83E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 19EC0A01224DD4CA2FC046F5AC666B32 /* ASNetwork.release.xcconfig */;
baseConfigurationReference = 5E0FFAF5411BB08D1F3004724017D4F3 /* ASNetwork.debug.xcconfig */;
buildSettings = {
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
......@@ -781,16 +735,16 @@
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
name = Debug;
};
5AE5F2CCBB5780FB631D8DB0E308B615 /* Debug */ = {
4E9D97466B80B3D01C74572651BEA5FE /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A1D9B9036D96EE06017A3771197AB0A1 /* ASNetwork.debug.xcconfig */;
baseConfigurationReference = C4ECF0070DAC1A794BA7BD296C38003A /* Pods-CRMNetDetect_Tests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
......@@ -800,41 +754,25 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_PREFIX_HEADER = "Target Support Files/ASNetwork/ASNetwork-prefix.pch";
INFOPLIST_FILE = "Target Support Files/ASNetwork/ASNetwork-Info.plist";
INFOPLIST_FILE = "Target Support Files/Pods-CRMNetDetect_Tests/Pods-CRMNetDetect_Tests-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MODULEMAP_FILE = "Target Support Files/ASNetwork/ASNetwork.modulemap";
PRODUCT_MODULE_NAME = ASNetwork;
PRODUCT_NAME = ASNetwork;
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-CRMNetDetect_Tests/Pods-CRMNetDetect_Tests.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
75E6192A196F74DC5144D44B66438DEC /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 76C611B2F70AD862779DB44B7136AC22 /* CRMNetDetect.debug.xcconfig */;
buildSettings = {
CODE_SIGNING_ALLOWED = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CRMNetDetect";
IBSC_MODULE = CRMNetDetect;
INFOPLIST_FILE = "Target Support Files/CRMNetDetect/ResourceBundle-CRMNetDetect-CRMNetDetect-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
PRODUCT_NAME = CRMNetDetect;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
WRAPPER_EXTENSION = bundle;
};
name = Debug;
};
7EE7A78859F657F6BEFC651185B43192 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
......@@ -897,6 +835,23 @@
};
name = Release;
};
8520B44112FF5ED04C1D8BBDB944D6D4 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 76C611B2F70AD862779DB44B7136AC22 /* CRMNetDetect.debug.xcconfig */;
buildSettings = {
CODE_SIGNING_ALLOWED = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CRMNetDetect";
IBSC_MODULE = CRMNetDetect;
INFOPLIST_FILE = "Target Support Files/CRMNetDetect/ResourceBundle-CRMNetDetect-CRMNetDetect-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
PRODUCT_NAME = CRMNetDetect;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
WRAPPER_EXTENSION = bundle;
};
name = Debug;
};
91D0B00DE3B7C853B78E34653E78326A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5BF6BCC1EDCCA9ECDB3F0659E978CEDE /* CRMNetDetect.release.xcconfig */;
......@@ -1028,6 +983,55 @@
};
name = Release;
};
A6C8F5B4DD85948923CCEB4373248E1C /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D2BD803EE3DCEE5861582A0FF05CC0E3 /* ASNetwork.release.xcconfig */;
buildSettings = {
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_PREFIX_HEADER = "Target Support Files/ASNetwork/ASNetwork-prefix.pch";
INFOPLIST_FILE = "Target Support Files/ASNetwork/ASNetwork-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MODULEMAP_FILE = "Target Support Files/ASNetwork/ASNetwork.modulemap";
PRODUCT_MODULE_NAME = ASNetwork;
PRODUCT_NAME = ASNetwork;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
AAC935AEF8DE1668DB6B92149C065CF8 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5BF6BCC1EDCCA9ECDB3F0659E978CEDE /* CRMNetDetect.release.xcconfig */;
buildSettings = {
CODE_SIGNING_ALLOWED = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CRMNetDetect";
IBSC_MODULE = CRMNetDetect;
INFOPLIST_FILE = "Target Support Files/CRMNetDetect/ResourceBundle-CRMNetDetect-CRMNetDetect-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
PRODUCT_NAME = CRMNetDetect;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
WRAPPER_EXTENSION = bundle;
};
name = Release;
};
D299434AB35E7FD6F7921C8EF24742FF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
......@@ -1124,11 +1128,11 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8424760FB88E2F0EF63142CF5E524C4D /* Build configuration list for PBXNativeTarget "ASNetwork" */ = {
7B5D973D61FFC2D0CB0ECCF4B795A14A /* Build configuration list for PBXNativeTarget "ASNetwork" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5AE5F2CCBB5780FB631D8DB0E308B615 /* Debug */,
53C5466173A5B6427A64D4E51BAFB684 /* Release */,
3F718BA1DAA6E9916267C1AC7B77B83E /* Debug */,
A6C8F5B4DD85948923CCEB4373248E1C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
......@@ -1142,11 +1146,11 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F568D4A99D7AC76CE9B7CF589755F094 /* Build configuration list for PBXNativeTarget "CRMNetDetect-CRMNetDetect" */ = {
F0BB3B8E99536E79E315DAAACEE5DE82 /* Build configuration list for PBXNativeTarget "CRMNetDetect-CRMNetDetect" */ = {
isa = XCConfigurationList;
buildConfigurations = (
75E6192A196F74DC5144D44B66438DEC /* Debug */,
210136FF5C335264D60BA040C3721C32 /* Release */,
8520B44112FF5ED04C1D8BBDB944D6D4 /* Debug */,
AAC935AEF8DE1668DB6B92149C065CF8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
......
......@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<string>1.0.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
......
......@@ -11,7 +11,8 @@
#endif
#import "ASCellularNet.h"
#import "ASInterfaceService.h"
#import "ASNetwork.h"
#import "ASNetworkInterfaceInfo.h"
#import "ASPingService.h"
#import "ASReachability.h"
#import "ASSimplePing.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment