From 4e06464af3f5394e38a283031ac64bb590956853 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 26 Jan 2015 15:34:11 +0100 Subject: [PATCH] Use CTTelephonyNetworkInfo for devices > iOS7 to detect network connection --- Classes/LinphoneManager.m | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 5b6a5c2b5..e0d639045 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -28,6 +28,7 @@ #import #import #import +#import #import "LinphoneManager.h" #import "LinphoneCoreSettingsStore.h" @@ -1205,18 +1206,30 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } - (NetworkType)network { - UIApplication *app = [UIApplication sharedApplication]; - NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; - NSNumber *dataNetworkItemView = nil; + if( [[[UIDevice currentDevice] systemVersion] floatValue] < 7 ){ + UIApplication *app = [UIApplication sharedApplication]; + NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; + NSNumber *dataNetworkItemView = nil; - for (id subview in subviews) { - if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { - dataNetworkItemView = subview; - break; + for (id subview in subviews) { + if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { + dataNetworkItemView = subview; + break; + } } + + NSNumber *number = (NSNumber*)[dataNetworkItemView valueForKey:@"dataNetworkType"]; + return [number intValue]; + } else { + CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init]; + NSString* currentRadio = info.currentRadioAccessTechnology; + if( [currentRadio isEqualToString:CTRadioAccessTechnologyEdge]){ + return network_2g; + } else if ([currentRadio isEqualToString:CTRadioAccessTechnologyLTE]){ + return network_4g; + } + return network_3g; } - NSNumber *number = (NSNumber*)[dataNetworkItemView valueForKey:@"dataNetworkType"]; - return [number intValue]; }