summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorJason Wray <jason@kulturny.com>2015-10-09 14:44:06 -0400
committerJason Wray <jason@kulturny.com>2015-10-19 13:52:28 -0400
commit28be82c1c19505abb47ca1c03fd069cc4a015ec6 (patch)
treea948b97341e1e7ac423a744fb0f8c985314de070 /platform
parentaaf090b87dbc96f7a09e783833c10d0b88a16d39 (diff)
downloadqtlocation-mapboxgl-28be82c1c19505abb47ca1c03fd069cc4a015ec6.tar.gz
[ios] remove CoreTelephony dependency
Cellular carrier name and connectivity level will now only be sent if the developer independently chooses to link the CoreTelephony framework in their app.
Diffstat (limited to 'platform')
-rw-r--r--platform/ios/MGLMapboxEvents.m66
1 files changed, 30 insertions, 36 deletions
diff --git a/platform/ios/MGLMapboxEvents.m b/platform/ios/MGLMapboxEvents.m
index 1bddb7ff40..bc6dfb02b7 100644
--- a/platform/ios/MGLMapboxEvents.m
+++ b/platform/ios/MGLMapboxEvents.m
@@ -1,8 +1,6 @@
#import "MGLMapboxEvents.h"
#import <UIKit/UIKit.h>
-#import <CoreTelephony/CTTelephonyNetworkInfo.h>
-#import <CoreTelephony/CTCarrier.h>
#import <CoreLocation/CoreLocation.h>
#include <mbgl/platform/darwin/reachability.h>
@@ -77,8 +75,19 @@ const NSTimeInterval MGLFlushInterval = 60;
} else {
_scale = [UIScreen mainScreen].scale;
}
- CTCarrier *carrierVendor = [[[CTTelephonyNetworkInfo alloc] init] subscriberCellularProvider];
- _carrier = [carrierVendor carrierName];
+
+ // Collect cellular carrier data if CoreTelephony is linked
+ Class CTTelephonyNetworkInfo = NSClassFromString(@"CTTelephonyNetworkInfo");
+ if (CTTelephonyNetworkInfo) {
+ id telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
+
+ SEL subscriberCellularProviderSelector = NSSelectorFromString(@"subscriberCellularProvider");
+ id carrierVendor = ((id (*)(id, SEL))[telephonyNetworkInfo methodForSelector:subscriberCellularProviderSelector])(telephonyNetworkInfo, subscriberCellularProviderSelector);
+
+ SEL carrierNameSelector = NSSelectorFromString(@"carrierName");
+ NSString *carrierName = ((id (*)(id, SEL))[carrierVendor methodForSelector:carrierNameSelector])(carrierVendor, carrierNameSelector);
+ _carrier = carrierName;
+ }
}
return self;
}
@@ -497,14 +506,13 @@ const NSTimeInterval MGLFlushInterval = 60;
[evt setValue:@((int)(100 * [UIDevice currentDevice].batteryLevel)) forKey:@"batteryLevel"];
[evt setValue:@(strongSelf.data.scale) forKey:@"resolution"];
[evt setValue:strongSelf.data.carrier forKey:@"carrier"];
-
- NSString *cell = [strongSelf currentCellularNetworkConnectionType];
- if (cell) {
- [evt setValue:cell forKey:@"cellularNetworkType"];
- } else {
- [evt setObject:[NSNull null] forKey:@"cellularNetworkType"];
+
+ NSString *cell;
+ if (strongSelf.data.carrier) {
+ cell = [strongSelf currentCellularNetworkConnectionType];
}
-
+ [evt setObject:(cell ? cell : [NSNull null]) forKey:@"cellularNetworkType"];
+
MGLReachability *reachability = [MGLReachability reachabilityForLocalWiFi];
[evt setValue:([reachability isReachableViaWiFi] ? @YES : @NO) forKey:@"wifi"];
@@ -716,33 +724,19 @@ const NSTimeInterval MGLFlushInterval = 60;
// Can be called from any thread.
//
- (NSString *) currentCellularNetworkConnectionType {
- CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];
- NSString *radioTech = telephonyInfo.currentRadioAccessTechnology;
-
+ NSString *radioTech;
+
+ Class CTTelephonyNetworkInfo = NSClassFromString(@"CTTelephonyNetworkInfo");
+ if (CTTelephonyNetworkInfo) {
+ id telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
+ SEL currentRadioAccessTechnologySelector = NSSelectorFromString(@"currentRadioAccessTechnology");
+ radioTech = ((id (*)(id, SEL))[telephonyNetworkInfo methodForSelector:currentRadioAccessTechnologySelector])(telephonyNetworkInfo, currentRadioAccessTechnologySelector);
+ }
+
if (radioTech == nil) {
return nil;
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyGPRS]) {
- return @"GPRS";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyEdge]) {
- return @"EDGE";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyWCDMA]) {
- return @"WCDMA";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyHSDPA]) {
- return @"HSDPA";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyHSUPA]) {
- return @"HSUPA";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
- return @"CDMA1x";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
- return @"CDMAEVDORev0";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
- return @"CDMAEVDORevA";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
- return @"CDMAEVDORevB";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyeHRPD]) {
- return @"HRPD";
- } else if ([radioTech isEqualToString:CTRadioAccessTechnologyLTE]) {
- return @"LTE";
+ } else if ([radioTech hasPrefix:@"CTRadioAccessTechnology"]) {
+ return [radioTech substringFromIndex:23];
} else {
return @"Unknown";
}