[ios] Add Radius Configuration (#11070)
* Add Radius Configuration * Remove default config - removes default configuration - moves config setup to events init method - renames config class * Delete MGLConfig header file
This commit is contained in:
@@ -247,6 +247,10 @@
|
||||
968F36B51E4D128D003A5522 /* MGLDistanceFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3557F7AE1E1D27D300CCA5E6 /* MGLDistanceFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
96E027231E57C76E004B8E66 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 96E027251E57C76E004B8E66 /* Localizable.strings */; };
|
||||
96F3F73C1F57124B003E2D2C /* MGLUserLocationHeadingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F3F73B1F5711F1003E2D2C /* MGLUserLocationHeadingIndicator.h */; };
|
||||
AC518DFF201BB55A00EBC820 /* MGLTelemetryConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */; };
|
||||
AC518E00201BB55A00EBC820 /* MGLTelemetryConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */; };
|
||||
AC518E03201BB56000EBC820 /* MGLTelemetryConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */; };
|
||||
AC518E04201BB56100EBC820 /* MGLTelemetryConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */; };
|
||||
DA00FC8E1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
DA00FC8F1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
DA00FC901D5EEB0D009AABC8 /* MGLAttributionInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA00FC8D1D5EEB0D009AABC8 /* MGLAttributionInfo.mm */; };
|
||||
@@ -750,6 +754,8 @@
|
||||
96E0272D1E57C7E6004B8E66 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
96E0272E1E57C7E7004B8E66 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
96F3F73B1F5711F1003E2D2C /* MGLUserLocationHeadingIndicator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationHeadingIndicator.h; sourceTree = "<group>"; };
|
||||
AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLTelemetryConfig.h; sourceTree = "<group>"; };
|
||||
AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLTelemetryConfig.m; sourceTree = "<group>"; };
|
||||
DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributionInfo.h; sourceTree = "<group>"; };
|
||||
DA00FC8D1D5EEB0D009AABC8 /* MGLAttributionInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAttributionInfo.mm; sourceTree = "<group>"; };
|
||||
DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFeatureTests.mm; path = ../../darwin/test/MGLFeatureTests.mm; sourceTree = "<group>"; };
|
||||
@@ -1724,6 +1730,8 @@
|
||||
DA8848491CBAFB9800AB86E3 /* MGLMapboxEvents.m */,
|
||||
9620BB361E69FE1700705A1D /* MGLSDKUpdateChecker.h */,
|
||||
9620BB371E69FE1700705A1D /* MGLSDKUpdateChecker.mm */,
|
||||
AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */,
|
||||
AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */,
|
||||
);
|
||||
name = Telemetry;
|
||||
sourceTree = "<group>";
|
||||
@@ -1840,6 +1848,7 @@
|
||||
DA8847F51CBAFA5100AB86E3 /* MGLOfflineRegion.h in Headers */,
|
||||
DA737EE11D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */,
|
||||
DA8848851CBB033F00AB86E3 /* FABKitProtocol.h in Headers */,
|
||||
AC518DFF201BB55A00EBC820 /* MGLTelemetryConfig.h in Headers */,
|
||||
DA88481B1CBAFA6200AB86E3 /* MGLGeometry_Private.h in Headers */,
|
||||
3510FFF91D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h in Headers */,
|
||||
3557F7B01E1D27D300CCA5E6 /* MGLDistanceFormatter.h in Headers */,
|
||||
@@ -1906,6 +1915,7 @@
|
||||
7E016D7F1D9E86BE00A29A21 /* MGLPolyline+MGLAdditions.h in Headers */,
|
||||
DABFB8701CBE9A0F00D62B32 /* MGLMapView+IBAdditions.h in Headers */,
|
||||
353AFA151D65AB17005A69F4 /* NSDate+MGLAdditions.h in Headers */,
|
||||
AC518E00201BB55A00EBC820 /* MGLTelemetryConfig.h in Headers */,
|
||||
3510FFFA1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h in Headers */,
|
||||
DA72620C1DEEE3480043BB89 /* MGLOpenGLStyleLayer.h in Headers */,
|
||||
35CE61831D4165D9004F2359 /* UIColor+MGLAdditions.h in Headers */,
|
||||
@@ -2399,6 +2409,7 @@
|
||||
DA72620D1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm in Sources */,
|
||||
DA88481A1CBAFA6200AB86E3 /* MGLAccountManager.m in Sources */,
|
||||
3510FFFB1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm in Sources */,
|
||||
AC518E03201BB56000EBC820 /* MGLTelemetryConfig.m in Sources */,
|
||||
DA8848271CBAFA6200AB86E3 /* MGLPolyline.mm in Sources */,
|
||||
DA8848581CBAFB9800AB86E3 /* MGLMapboxEvents.m in Sources */,
|
||||
35CE61841D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */,
|
||||
@@ -2488,6 +2499,7 @@
|
||||
DA72620E1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm in Sources */,
|
||||
DAA4E42F1CBB730400178DFB /* MGLCompactCalloutView.m in Sources */,
|
||||
3510FFFC1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm in Sources */,
|
||||
AC518E04201BB56100EBC820 /* MGLTelemetryConfig.m in Sources */,
|
||||
DAA4E4271CBB730400178DFB /* MGLTilePyramidOfflineRegion.mm in Sources */,
|
||||
DAA4E41C1CBB730400178DFB /* MGLAccountManager.m in Sources */,
|
||||
35CE61851D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#import "MGLLocationManager.h"
|
||||
#import "MGLTelemetryConfig.h"
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
static const NSTimeInterval MGLLocationManagerHibernationTimeout = 300.0;
|
||||
static const NSTimeInterval MGLLocationManagerHibernationPollInterval = 5.0;
|
||||
static const CLLocationDistance MGLLocationManagerHibernationRadius = 300.0;
|
||||
static const CLLocationDistance MGLLocationManagerDistanceFilter = 5.0;
|
||||
static NSString * const MGLLocationManagerRegionIdentifier = @"MGLLocationManagerRegionIdentifier.fence.center";
|
||||
|
||||
@@ -122,7 +122,7 @@ static NSString * const MGLLocationManagerRegionIdentifier = @"MGLLocationManage
|
||||
}
|
||||
|
||||
- (void)establishRegionMonitoringForLocation:(CLLocation *)location {
|
||||
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:location.coordinate radius:MGLLocationManagerHibernationRadius identifier:MGLLocationManagerRegionIdentifier];
|
||||
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:location.coordinate radius:MGLTelemetryConfig.sharedConfig.MGLLocationManagerHibernationRadius identifier:MGLLocationManagerRegionIdentifier];
|
||||
region.notifyOnEntry = NO;
|
||||
region.notifyOnExit = YES;
|
||||
[self.standardLocationManager startMonitoringForRegion:region];
|
||||
@@ -151,7 +151,7 @@ static NSString * const MGLLocationManagerRegionIdentifier = @"MGLLocationManage
|
||||
if (location.speed > 0.0) {
|
||||
[self startBackgroundTimeoutTimer];
|
||||
}
|
||||
if (self.standardLocationManager.monitoredRegions.count == 0 || location.horizontalAccuracy < MGLLocationManagerHibernationRadius) {
|
||||
if (self.standardLocationManager.monitoredRegions.count == 0 || location.horizontalAccuracy < MGLTelemetryConfig.sharedConfig.MGLLocationManagerHibernationRadius) {
|
||||
[self establishRegionMonitoringForLocation:location];
|
||||
}
|
||||
if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#import "NSException+MGLAdditions.h"
|
||||
#import "MGLAPIClient.h"
|
||||
#import "MGLLocationManager.h"
|
||||
#import "MGLTelemetryConfig.h"
|
||||
|
||||
#include <mbgl/storage/reachability.h>
|
||||
#include <sys/sysctl.h>
|
||||
@@ -172,6 +173,8 @@ const NSTimeInterval MGLFlushInterval = 180;
|
||||
- (instancetype) init {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[MGLTelemetryConfig.sharedConfig configurationFromKey:[[NSUserDefaults standardUserDefaults] objectForKey:MGLMapboxMetricsProfile]];
|
||||
|
||||
_currentAccountTypeValue = @0;
|
||||
_currentMetricsEnabledValue = YES;
|
||||
|
||||
|
||||
18
platform/ios/src/MGLTelemetryConfig.h
Normal file
18
platform/ios/src/MGLTelemetryConfig.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MGLTelemetryConfig : NSObject
|
||||
|
||||
@property (nonatomic) CLLocationDistance MGLLocationManagerHibernationRadius;
|
||||
|
||||
extern NSString *const MGLMapboxMetricsProfile;
|
||||
|
||||
+ (nullable instancetype)sharedConfig;
|
||||
|
||||
- (void)configurationFromKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
35
platform/ios/src/MGLTelemetryConfig.m
Normal file
35
platform/ios/src/MGLTelemetryConfig.m
Normal file
@@ -0,0 +1,35 @@
|
||||
#import "MGLTelemetryConfig.h"
|
||||
|
||||
static const CLLocationDistance MGLConfigHibernationRadiusDefault = 300.0;
|
||||
static const CLLocationDistance MGLConfigHibernationRadiusWide = 1200.0;
|
||||
|
||||
NSString *const MGLMapboxMetricsProfile = @"MGLMapboxMetricsProfile";
|
||||
|
||||
static NSString *const MGLConfigHibernationRadiusWideKey = @"WideGeoFence";
|
||||
|
||||
@implementation MGLTelemetryConfig
|
||||
|
||||
- (instancetype) init {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_MGLLocationManagerHibernationRadius = MGLConfigHibernationRadiusDefault;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
+ (nullable instancetype)sharedConfig {
|
||||
static dispatch_once_t onceToken;
|
||||
static MGLTelemetryConfig *_sharedConfig;
|
||||
dispatch_once(&onceToken, ^{
|
||||
_sharedConfig = [[self alloc] init];
|
||||
});
|
||||
return _sharedConfig;
|
||||
}
|
||||
|
||||
- (void)configurationFromKey:(NSString *)key {
|
||||
if ([key isEqualToString:MGLConfigHibernationRadiusWideKey]) {
|
||||
_MGLLocationManagerHibernationRadius = MGLConfigHibernationRadiusWide;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user