Authored by 朱小军

网络监测可选 review by 孟顺

Pod::Spec.new do |s|
s.name = "YH_Analytics"
s.version = "3.1.6"
s.version = "3.1.8"
s.summary = "Analytics Kit"
s.description = <<-DESC
Analytics Kit
... ...
... ... @@ -72,8 +72,6 @@ static dispatch_queue_t persisting_queue() {
@property (strong, nonatomic) NSMutableArray *tempPerformanceArray;
// 开启网络状态监测
- (void)startObserverNetworkReachabilityStatus;
// 将一个事件写入到文件
- (BOOL)writeEventToFile:(YHEvent *)eventData;
... ... @@ -118,6 +116,10 @@ static dispatch_queue_t persisting_queue() {
self.currentStatus = [[YHStatus alloc]init];
self.immediUploadItemDic = [[NSMutableDictionary alloc]initWithCapacity:4];
self.lockLogFile = NO;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNetworkReachabilityStatusChanged:) name:AFNetworkingReachabilityDidChangeNotification
object:nil];
}
return self;
... ... @@ -129,6 +131,8 @@ static dispatch_queue_t persisting_queue() {
self.device = nil;
self.currentStatus = nil;
self.immediUploadItemDic = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#pragma mark - Property
... ... @@ -210,9 +214,6 @@ static dispatch_queue_t persisting_queue() {
// 设置status
[self.immediUploadItemDic setObject: [[NSMutableArray alloc]initWithObjects:self.currentStatus.jsonDictionary, nil] forKey:JsonKeyDataTypeStatus];
}
[self startObserverNetworkReachabilityStatus];
}
- (void)uploadFirstLaunchApp
... ... @@ -470,9 +471,12 @@ static dispatch_queue_t persisting_queue() {
#pragma mark - private method
// 添加网络监测回调block
- (void)startObserverNetworkReachabilityStatus
- (void)handleNetworkReachabilityStatusChanged:(NSNotification *)notification
{
AFNetworkReachabilityStatus status = [[notification.userInfo objectForKey:AFNetworkingReachabilityNotificationStatusItem] integerValue];
YALog(@"%@", AFStringFromNetworkReachabilityStatus(status));
/**
CTRadioAccessTechnologyGPRS - 2G
CTRadioAccessTechnologyEdge - 2G (sometimes called 2.5G)
... ... @@ -486,47 +490,48 @@ static dispatch_queue_t persisting_queue() {
CTRadioAccessTechnologyeHRPD - 3G (or 3.5 - eHRPD is to allow migration from CDMA EVDO to LTE)
CTRadioAccessTechnologyLTE - 4G (allowed to be called 4G by the ITU as mentioend above)
*/
NSString *net = kNetWorkStatusUnknow;
[[YHNetworkService sharedInstance] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSString *net = kNetWorkStatusUnknow;
CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
switch (status) {
case AFNetworkReachabilityStatusUnknown:
case AFNetworkReachabilityStatusNotReachable:
net = kNetWorkStatusUnknow;
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
{
if (([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)) {
if ([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
net = kNetWorkStatus2G;
} else if([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA] || [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
net = kNetWorkStatus3G;
} else if([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
net = kNetWorkStatus4G;
} else {
net = kNetWorkStatusUnknow;
}
CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
switch (status) {
case AFNetworkReachabilityStatusUnknown:
case AFNetworkReachabilityStatusNotReachable:
net = kNetWorkStatusUnknow;
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
{
if (([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)) {
if ([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]
|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
net = kNetWorkStatus2G;
} else if([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]
|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]
|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]
|| [netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
net = kNetWorkStatus3G;
} else if([netInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
net = kNetWorkStatus4G;
} else {
net = kNetWorkStatusUnknow;
}
} else {
net = kNetWorkStatusUnknow;
}
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
net = kNetWorkStatusWIFI;
break;
default:
break;
}
if ([self updateNetWorkStatus:net]) {
[self updateImmediUploadDicStatus];
}
}];
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
net = kNetWorkStatusWIFI;
break;
default:
break;
}
if ([self updateNetWorkStatus:net]) {
[self updateImmediUploadDicStatus];
}
}
// 更新网络状态
... ...
... ... @@ -15,7 +15,7 @@ typedef void (^YHNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus sta
+ (instancetype)sharedInstance;
- (void)setReachabilityStatusChangeBlock:(YHNetworkReachabilityStatusBlock)block;
- (void)startReachableMonitor;
- (NSURLSessionDataTask *)uploadLogData:(NSDictionary *)parameters completionBlock:(void (^)(BOOL success, NSError *error))block;
- (NSURLSessionDataTask *)uploadLogcustomURL:(NSString *)url parameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL success, NSError *error))block;
... ...
... ... @@ -15,7 +15,6 @@ static NSString *const YH_HTTP_PREFIX = @"http://";
@interface YHNetworkService ()
@property (strong, nonatomic) AFHTTPSessionManager *httpClient;
@property (readwrite, nonatomic, copy) YHNetworkReachabilityStatusBlock networkReachabilityStatusBlock;
@property (strong, nonatomic) AFHTTPSessionManager *baiduManager;
@end
... ... @@ -48,16 +47,13 @@ static NSString *const YH_HTTP_PREFIX = @"http://";
AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/json", @"text/plain", @"text/html", @"text/xml", nil];
[self.baiduManager setResponseSerializer:responseSerializer];
}
return self;
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.httpClient.reachabilityManager stopMonitoring];
self.networkReachabilityStatusBlock = nil;
self.httpClient = nil;
}
... ... @@ -88,12 +84,7 @@ static NSString *const YH_HTTP_PREFIX = @"http://";
#pragma mark - public method
- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block
{
self.networkReachabilityStatusBlock = block;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkReachabilityStatusChanged:) name:AFNetworkingReachabilityDidChangeNotification object:nil];
- (void)startReachableMonitor {
[self.httpClient.reachabilityManager startMonitoring];
}
... ... @@ -292,15 +283,7 @@ static NSString *const YH_HTTP_PREFIX = @"http://";
#pragma mark - private method
- (void)handleNetworkReachabilityStatusChanged:(NSNotification *)notification
{
AFNetworkReachabilityStatus status = [[notification.userInfo objectForKey:AFNetworkingReachabilityNotificationStatusItem] integerValue];
YALog(@"%@", AFStringFromNetworkReachabilityStatus(status));
if (self.networkReachabilityStatusBlock) {
self.networkReachabilityStatusBlock(status);
}
}
#pragma mark baidu
- (void)getbaiduNetStatus:(NSDictionary *)parameters completionBlock:(void (^)(NSTimeInterval cts, NSInteger errCode))block
... ...
... ... @@ -32,7 +32,10 @@ typedef NS_ENUM(NSInteger, YHLogStrategy) {
* 此处AppId即为应用的appKey
*/
- (void)startWithAppId:(NSString *)appId;
/**
* 是否启动网络监听
*/
- (void)startMonitor;
/**
* 更新发送策略
*/
... ...
... ... @@ -206,7 +206,6 @@
/*
构建即时发送模式下数据
*/
[[YHAssemblyAssistant sharedInstance] prepareImmediUploadDic:appId sessionId:self.session channelId:self.channelId];
[self registerCrashReporter];
... ... @@ -258,6 +257,10 @@
// }];
}
- (void)startMonitor {
[[YHNetworkService sharedInstance] startReachableMonitor];
}
// 记录event
- (void)logEvent:(NSString *)eventId parameters:(NSDictionary *)param
{
... ...