diff options
-rw-r--r-- | platform/darwin/src/MGLMetricsManager.m | 16 | ||||
-rw-r--r-- | platform/darwin/src/MGLMetricsManager_Private.h | 2 | ||||
-rw-r--r-- | platform/darwin/src/MGLNetworkConfiguration.m | 9 | ||||
-rw-r--r-- | platform/darwin/src/MGLNetworkConfiguration_Private.h | 8 |
4 files changed, 25 insertions, 10 deletions
diff --git a/platform/darwin/src/MGLMetricsManager.m b/platform/darwin/src/MGLMetricsManager.m index cdc392ce40..54a1216c04 100644 --- a/platform/darwin/src/MGLMetricsManager.m +++ b/platform/darwin/src/MGLMetricsManager.m @@ -1,14 +1,17 @@ #import "MGLMetricsManager_Private.h" +#import "MGLNetworkConfiguration_Private.h" #if TARGET_OS_IOS #import "MGLMapboxEvents.h" #endif -NSString * const kMGLPerformanceMetric = @"mobile.performance_trace"; - NSString* MGLStringFromMetricType(MGLMetricType metricType) { - return [@[kMGLPerformanceMetric] objectAtIndex:metricType]; + return [@[kMGLDownloadPerformanceEvent] objectAtIndex:metricType]; } +@interface MGLMetricsManager() <MGLNetworkConfigurationMetricsDelegate> + +@end + @implementation MGLMetricsManager + (instancetype)sharedManager @@ -17,6 +20,7 @@ NSString* MGLStringFromMetricType(MGLMetricType metricType) { static id sharedConfiguration; dispatch_once(&once, ^{ sharedConfiguration = [[self alloc] init]; + [MGLNetworkConfiguration sharedManager].metricsDelegate = sharedConfiguration; }); return sharedConfiguration; } @@ -34,7 +38,7 @@ NSString* MGLStringFromMetricType(MGLMetricType metricType) { switch (metricType) { case MGLMetricTypePerformance: - eventName = kMGLPerformanceMetric; + eventName = kMGLDownloadPerformanceEvent; break; default: @@ -46,4 +50,8 @@ NSString* MGLStringFromMetricType(MGLMetricType metricType) { } #endif +- (void)networkConfiguration:(MGLNetworkConfiguration *)networkConfiguration didGenerateMetricEvent:(NSDictionary *)metricEvent { + [self handleMetricsEvent:MGLMetricTypePerformance withAttributes:metricEvent]; +} + @end diff --git a/platform/darwin/src/MGLMetricsManager_Private.h b/platform/darwin/src/MGLMetricsManager_Private.h index a2b2d9548c..2aa3835ab3 100644 --- a/platform/darwin/src/MGLMetricsManager_Private.h +++ b/platform/darwin/src/MGLMetricsManager_Private.h @@ -2,8 +2,6 @@ NS_ASSUME_NONNULL_BEGIN -FOUNDATION_EXTERN MGL_EXPORT NSString *const kMGLPerformanceMetric; - @interface MGLMetricsManager (Private) - (void)handleMetricsEvent:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes; diff --git a/platform/darwin/src/MGLNetworkConfiguration.m b/platform/darwin/src/MGLNetworkConfiguration.m index f938bcc753..0041b35c45 100644 --- a/platform/darwin/src/MGLNetworkConfiguration.m +++ b/platform/darwin/src/MGLNetworkConfiguration.m @@ -1,13 +1,14 @@ #import "MGLNetworkConfiguration_Private.h" -#import "MGLMetricsManager_Private.h" static NSString * const MGLStartTime = @"start_time"; static NSString * const MGLResourceType = @"resource_type"; +NSString * const kMGLDownloadPerformanceEvent = @"mobile.performance_trace"; @interface MGLNetworkConfiguration () @property (strong) NSURLSessionConfiguration *sessionConfig; @property (nonatomic, strong) NSMutableDictionary<NSString *, NSDictionary*> *events; +@property (nonatomic, weak) id<MGLNetworkConfigurationMetricsDelegate> metricsDelegate; @end @@ -72,7 +73,7 @@ static NSString * const MGLResourceType = @"resource_type"; { if (urlString && [self.events objectForKey:urlString]) { NSDictionary *eventAttributes = [self eventAttributesForURL:urlString withAction:action]; - [[MGLMetricsManager sharedManager] handleMetricsEvent:MGLMetricTypePerformance withAttributes:eventAttributes]; + [self.metricsDelegate networkConfiguration:self didGenerateMetricEvent:eventAttributes]; [self.events removeObjectForKey:urlString]; } } @@ -93,9 +94,9 @@ static NSString * const MGLResourceType = @"resource_type"; if (action) { [attributes addObject:@{ @"name" : @"action" , @"value" : action }]; } - NSString *event = MGLStringFromMetricType(MGLMetricTypePerformance); + return @{ - @"event" : event, + @"event" : kMGLDownloadPerformanceEvent, @"created" : createdDate, @"sessionId" : [NSUUID UUID].UUIDString, @"counters" : @[ @{ @"name" : @"elapsed_time" , @"value" : @(elapsedTime) } ], diff --git a/platform/darwin/src/MGLNetworkConfiguration_Private.h b/platform/darwin/src/MGLNetworkConfiguration_Private.h index 60a10841f4..18c78a004a 100644 --- a/platform/darwin/src/MGLNetworkConfiguration_Private.h +++ b/platform/darwin/src/MGLNetworkConfiguration_Private.h @@ -2,11 +2,19 @@ NS_ASSUME_NONNULL_BEGIN +@class MGLNetworkConfiguration; +@protocol MGLNetworkConfigurationMetricsDelegate <NSObject> + +- (void)networkConfiguration:(MGLNetworkConfiguration *)networkConfiguration didGenerateMetricEvent:(NSDictionary *)metricEvent; + +@end + extern NSString * const kMGLDownloadPerformanceEvent; @interface MGLNetworkConfiguration (Private) @property (nonatomic, strong) NSMutableDictionary<NSString*, NSDictionary*> *events; +@property (nonatomic, weak) id<MGLNetworkConfigurationMetricsDelegate> metricsDelegate; - (void)startDownloadEvent:(NSString *)urlString type:(NSString *)resourceType; - (void)stopDownloadEvent:(NSString *)urlString; |