From 5092d7259909eee85e518bdc996ab06307bc7bad Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Mon, 27 Apr 2015 17:37:39 -0400 Subject: [PATCH] #1352 - Adding start / stop visit monitoring infrastructure and integrating it with pause / resume metrics api --- include/mbgl/ios/MGLMetricsLocationManager.h | 2 ++ platform/ios/MGLMapboxEvents.m | 2 ++ platform/ios/MGLMetricsLocationManager.m | 15 +++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/include/mbgl/ios/MGLMetricsLocationManager.h b/include/mbgl/ios/MGLMetricsLocationManager.h index 5f3b56818..da5cffbcd 100644 --- a/include/mbgl/ios/MGLMetricsLocationManager.h +++ b/include/mbgl/ios/MGLMetricsLocationManager.h @@ -7,5 +7,7 @@ + (instancetype)sharedManager; + (void) startUpdatingLocation; + (void) stopUpdatingLocation; ++ (void) startMonitoringVisits; ++ (void) stopMonitoringVisits; @end diff --git a/platform/ios/MGLMapboxEvents.m b/platform/ios/MGLMapboxEvents.m index 87a6ccc6a..5e4016bb8 100644 --- a/platform/ios/MGLMapboxEvents.m +++ b/platform/ios/MGLMapboxEvents.m @@ -271,6 +271,7 @@ NSString *const MGLEventGestureRotateStart = @"Rotation"; } [MGLMapboxEvents sharedManager].isPaused = YES; [MGLMetricsLocationManager stopUpdatingLocation]; + [MGLMetricsLocationManager stopMonitoringVisits]; } // Must be called from the main thread. @@ -282,6 +283,7 @@ NSString *const MGLEventGestureRotateStart = @"Rotation"; } [MGLMapboxEvents sharedManager].isPaused = NO; [MGLMetricsLocationManager startUpdatingLocation]; + [MGLMetricsLocationManager startMonitoringVisits]; } // Can be called from any thread. Can be called rapidly from diff --git a/platform/ios/MGLMetricsLocationManager.m b/platform/ios/MGLMetricsLocationManager.m index af9b0a71b..eea137f69 100644 --- a/platform/ios/MGLMetricsLocationManager.m +++ b/platform/ios/MGLMetricsLocationManager.m @@ -37,6 +37,18 @@ [[MGLMetricsLocationManager sharedManager].locationManager stopUpdatingLocation]; } ++ (void) startMonitoringVisits { + if ([[MGLMetricsLocationManager sharedManager].locationManager respondsToSelector:@selector(startMonitoringVisits)]) { + [[MGLMetricsLocationManager sharedManager].locationManager startMonitoringVisits]; + } +} + ++ (void) stopMonitoringVisits { + if ([[MGLMetricsLocationManager sharedManager].locationManager respondsToSelector:@selector(stopMonitoringVisits)]) { + [[MGLMetricsLocationManager sharedManager].locationManager stopMonitoringVisits]; + } +} + #pragma mark CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { // Iterate through locations to pass all data @@ -65,10 +77,12 @@ case kCLAuthorizationStatusDenied: newStatus = @"User Explcitly Denied"; [MGLMetricsLocationManager stopUpdatingLocation]; + [MGLMetricsLocationManager stopMonitoringVisits]; break; case kCLAuthorizationStatusAuthorized: newStatus = @"User Has Authorized / Authorized Always"; [MGLMetricsLocationManager startUpdatingLocation]; + [MGLMetricsLocationManager startMonitoringVisits]; break; // case kCLAuthorizationStatusAuthorizedAlways: // newStatus = @"Not Determined"; @@ -76,6 +90,7 @@ case kCLAuthorizationStatusAuthorizedWhenInUse: newStatus = @"User Has Authorized When In Use Only"; [MGLMetricsLocationManager startUpdatingLocation]; + [MGLMetricsLocationManager startMonitoringVisits]; break; default: newStatus = @"Unknown";