diff options
-rw-r--r-- | platform/ios/src/MGLAPIClient.h | 1 | ||||
-rw-r--r-- | platform/ios/src/MGLAPIClient.m | 11 | ||||
-rw-r--r-- | platform/ios/src/MGLMapboxEvents.m | 71 |
3 files changed, 29 insertions, 54 deletions
diff --git a/platform/ios/src/MGLAPIClient.h b/platform/ios/src/MGLAPIClient.h index 0f8926d360..4e5ea3b5e0 100644 --- a/platform/ios/src/MGLAPIClient.h +++ b/platform/ios/src/MGLAPIClient.h @@ -9,7 +9,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)postEvents:(NS_ARRAY_OF(MGLMapboxEventAttributes *) *)events completionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler; - (void)postEvent:(MGLMapboxEventAttributes *)event completionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler; -- (void)cancelAll; @end diff --git a/platform/ios/src/MGLAPIClient.m b/platform/ios/src/MGLAPIClient.m index 7fb6538e5d..5e8ee5fe1d 100644 --- a/platform/ios/src/MGLAPIClient.m +++ b/platform/ios/src/MGLAPIClient.m @@ -21,7 +21,6 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; @property (nonatomic, copy) NSData *geoTrustCert; @property (nonatomic, copy) NSData *testServerCert; @property (nonatomic, copy) NSString *userAgent; -@property (nonatomic) NSMutableArray *dataTasks; @property (nonatomic) BOOL usesTestServer; @end @@ -33,7 +32,6 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; if (self) { _session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil]; - _dataTasks = [NSMutableArray array]; [self loadCertificates]; [self setupBaseURL]; [self setupUserAgent]; @@ -59,24 +57,15 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; error = error ?: statusError; completionHandler(error); } - [self.dataTasks removeObject:dataTask]; dataTask = nil; }]; [dataTask resume]; - if (dataTask) { - [self.dataTasks addObject:dataTask]; - } } - (void)postEvent:(nonnull MGLMapboxEventAttributes *)event completionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler { [self postEvents:@[event] completionHandler:completionHandler]; } -- (void)cancelAll { - [self.dataTasks makeObjectsPerformSelector:@selector(cancel)]; - [self.dataTasks removeAllObjects]; -} - #pragma mark Utilities - (NSURLRequest *)requestForEvents:(NS_ARRAY_OF(MGLMapboxEventAttributes *) *)events { diff --git a/platform/ios/src/MGLMapboxEvents.m b/platform/ios/src/MGLMapboxEvents.m index 2658cdfaa4..90123fbb00 100644 --- a/platform/ios/src/MGLMapboxEvents.m +++ b/platform/ios/src/MGLMapboxEvents.m @@ -278,6 +278,7 @@ const NSTimeInterval MGLFlushInterval = 180; if (self.paused && enabled) { [self resumeMetricsCollection]; } else if (!self.paused && !enabled) { + [self flush]; [self pauseMetricsCollection]; } } @@ -434,25 +435,31 @@ const NSTimeInterval MGLFlushInterval = 180; } - (MGLMapboxEventAttributes *)locationEventWithAttributes:(MGLMapboxEventAttributes *)attributeDictionary { - MGLMutableMapboxEventAttributes *attributes = [@{MGLEventKeyEvent: MGLEventTypeLocation, - MGLEventKeySource: MGLEventSource, - MGLEventKeySessionId: self.instanceID, - MGLEventKeyOperatingSystem: self.data.iOSVersion} mutableCopy]; - [self addApplicationStateToAttributes:attributes]; + MGLMutableMapboxEventAttributes *attributes = [NSMutableDictionary dictionary]; + attributes[MGLEventKeyEvent] = MGLEventTypeLocation; + attributes[MGLEventKeySource] = MGLEventSource; + attributes[MGLEventKeySessionId] = self.instanceID; + attributes[MGLEventKeyOperatingSystem] = self.data.iOSVersion; + NSString *currentApplicationState = [self applicationState]; + if (![currentApplicationState isEqualToString:MGLApplicationStateUnknown]) { + attributes[MGLEventKeyApplicationState] = currentApplicationState; + } + return [self eventForAttributes:attributes attributeDictionary:attributeDictionary]; } - (MGLMapboxEventAttributes *)mapLoadEventWithAttributes:(MGLMapboxEventAttributes *)attributeDictionary { - MGLMutableMapboxEventAttributes *attributes = [@{MGLEventKeyEvent: MGLEventTypeMapLoad, - MGLEventKeyCreated: [self.rfc3339DateFormatter stringFromDate:[NSDate date]], - MGLEventKeyVendorID: self.data.vendorId, - MGLEventKeyModel: self.data.model, - MGLEventKeyOperatingSystem: self.data.iOSVersion, - MGLEventKeyResolution: @(self.data.scale), - MGLEventKeyAccessibilityFontScale: @([self contentSizeScale]), - MGLEventKeyOrientation: [self deviceOrientation], - MGLEventKeyWifi: @([[MGLReachability reachabilityForLocalWiFi] isReachableViaWiFi])} mutableCopy]; - [self addBatteryStateToAttributes:attributes]; + MGLMutableMapboxEventAttributes *attributes = [NSMutableDictionary dictionary]; + attributes[MGLEventKeyEvent] = MGLEventTypeMapLoad; + attributes[MGLEventKeyCreated] = [self.rfc3339DateFormatter stringFromDate:[NSDate date]]; + attributes[MGLEventKeyVendorID] = self.data.vendorId; + attributes[MGLEventKeyModel] = self.data.model; + attributes[MGLEventKeyOperatingSystem] = self.data.iOSVersion; + attributes[MGLEventKeyResolution] = @(self.data.scale); + attributes[MGLEventKeyAccessibilityFontScale] = @([self contentSizeScale]); + attributes[MGLEventKeyOrientation] = [self deviceOrientation]; + attributes[MGLEventKeyWifi] = @([[MGLReachability reachabilityForLocalWiFi] isReachableViaWiFi]); + return [self eventForAttributes:attributes attributeDictionary:attributeDictionary]; } @@ -465,19 +472,22 @@ const NSTimeInterval MGLFlushInterval = 180; - (MGLMapboxEventAttributes *)mapDragEndEventWithAttributes:(MGLMapboxEventAttributes *)attributeDictionary { MGLMutableMapboxEventAttributes *attributes = [self interactionEvent]; attributes[MGLEventKeyEvent] = MGLEventTypeMapDragEnd; + return [self eventForAttributes:attributes attributeDictionary:attributeDictionary]; } - (MGLMutableMapboxEventAttributes *)interactionEvent { - MGLMutableMapboxEventAttributes *attributes = [@{MGLEventKeyCreated: [self.rfc3339DateFormatter stringFromDate:[NSDate date]], - MGLEventKeyOrientation: [self deviceOrientation], - MGLEventKeyWifi: @([[MGLReachability reachabilityForLocalWiFi] isReachableViaWiFi])} mutableCopy]; - [self addBatteryStateToAttributes:attributes]; + MGLMutableMapboxEventAttributes *attributes = [NSMutableDictionary dictionary]; + attributes[MGLEventKeyCreated] = [self.rfc3339DateFormatter stringFromDate:[NSDate date]]; + attributes[MGLEventKeyOrientation] = [self deviceOrientation]; + attributes[MGLEventKeyWifi] = @([[MGLReachability reachabilityForLocalWiFi] isReachableViaWiFi]); + return attributes; } - (MGLMapboxEventAttributes *)eventForAttributes:(MGLMutableMapboxEventAttributes *)attributes attributeDictionary:(MGLMapboxEventAttributes *)attributeDictionary { [attributes addEntriesFromDictionary:attributeDictionary]; + return [attributes copy]; } @@ -594,29 +604,6 @@ const NSTimeInterval MGLFlushInterval = 180; return result; } -- (void)addBatteryStateToAttributes:(MGLMutableMapboxEventAttributes *)attributes { - UIDeviceBatteryState batteryState = [[UIDevice currentDevice] batteryState]; - switch (batteryState) { - case UIDeviceBatteryStateCharging: - case UIDeviceBatteryStateFull: - attributes[MGLEventKeyPluggedIn] = @(YES); - break; - case UIDeviceBatteryStateUnplugged: - attributes[MGLEventKeyPluggedIn] = @(NO); - break; - default: - // do nothing - break; - } -} - -- (void)addApplicationStateToAttributes:(MGLMutableMapboxEventAttributes *)attributes { - NSString *currentApplicationState = [self applicationState]; - if (![currentApplicationState isEqualToString:MGLApplicationStateUnknown]) { - attributes[MGLEventKeyApplicationState] = currentApplicationState; - } -} - + (void)ensureMetricsOptoutExists { NSNumber *shownInAppNumber = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLMapboxMetricsEnabledSettingShownInApp"]; BOOL metricsEnabledSettingShownInAppFlag = [shownInAppNumber boolValue]; |