diff options
author | Julian Rex <julian.rex@mapbox.com> | 2019-04-19 15:43:47 -0400 |
---|---|---|
committer | Julian Rex <julian.rex@mapbox.com> | 2019-04-24 11:21:00 -0400 |
commit | 953e12ded2d93ac3efaf92dcad08f878d271db81 (patch) | |
tree | 26458318d8ba538e4ac64dc2073d960577fe8611 | |
parent | 261da437889670aaeb8849f1747e7deb6258caaa (diff) | |
download | qtlocation-mapboxgl-953e12ded2d93ac3efaf92dcad08f878d271db81.tar.gz |
[ios] Enable/Disable sku token handling
-rw-r--r-- | platform/darwin/src/MGLAccountManager.m | 38 | ||||
-rw-r--r-- | platform/darwin/src/MGLAccountManager_Private.h | 1 | ||||
-rw-r--r-- | platform/darwin/src/http_file_source.mm | 17 | ||||
-rw-r--r-- | platform/ios/src/MGLMapboxEvents.h | 1 | ||||
-rw-r--r-- | platform/ios/src/MGLMapboxEvents.m | 7 |
5 files changed, 52 insertions, 12 deletions
diff --git a/platform/darwin/src/MGLAccountManager.m b/platform/darwin/src/MGLAccountManager.m index 0566605323..73688d64e2 100644 --- a/platform/darwin/src/MGLAccountManager.m +++ b/platform/darwin/src/MGLAccountManager.m @@ -10,16 +10,18 @@ #import "MBXSKUToken.h" #endif +static BOOL _MGLAccountsSDKEnabled; + @interface MGLAccountManager () @property (atomic) NSString *accessToken; @property (nonatomic) NSURL *apiBaseURL; #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR +@property (class, nonatomic, getter=isAccountsSDKEnabled) BOOL accountsSDKEnabled; @property (atomic) NSString *skuToken; @property (atomic) NSDate *skuTokenExpiration; #endif - @end @implementation MGLAccountManager @@ -41,7 +43,9 @@ } #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR - self.skuToken = [MBXSKUToken skuToken]; + if (self.accountsSDKEnabled) { + self.skuToken = [MBXSKUToken skuToken]; + } #endif } @@ -101,15 +105,35 @@ #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR -+ (void)setSkuToken:(NSString *)skuToken { - NSTimeInterval oneHour = 60 * 60; // TODO: make this const - MGLAccountManager.sharedManager.skuTokenExpiration = [NSDate dateWithTimeIntervalSinceNow:oneHour]; ++ (BOOL)isAccountsSDKEnabled { + return _MGLAccountsSDKEnabled; +} - MGLAccountManager.sharedManager.skuToken = skuToken; ++ (void)setAccountsSDKEnabled:(BOOL)accountsSDKEnabled { + _MGLAccountsSDKEnabled = accountsSDKEnabled; + self.skuToken = [MBXSKUToken skuToken]; + [MGLMapboxEvents updateEventsManagerSkuId]; +} + ++ (void)setSkuToken:(NSString *)skuToken { + if (MGLAccountManager.accountsSDKEnabled) { + NSTimeInterval oneHour = 60 * 60; // TODO: make this const + MGLAccountManager.sharedManager.skuTokenExpiration = [NSDate dateWithTimeIntervalSinceNow:oneHour]; + MGLAccountManager.sharedManager.skuToken = skuToken; + } + else { + MGLAccountManager.sharedManager.skuTokenExpiration = [NSDate distantFuture]; + MGLAccountManager.sharedManager.skuToken = nil; + } } + (NSString *)skuToken { - return [MGLAccountManager.sharedManager isSKUTokenExpired] ? [MBXSKUToken skuToken] : MGLAccountManager.sharedManager.skuToken; + if (MGLAccountManager.accountsSDKEnabled) { + return [MGLAccountManager.sharedManager isSKUTokenExpired] ? [MBXSKUToken skuToken] : MGLAccountManager.sharedManager.skuToken; + } + else { + return nil; + } } - (BOOL)isSKUTokenExpired { diff --git a/platform/darwin/src/MGLAccountManager_Private.h b/platform/darwin/src/MGLAccountManager_Private.h index 3fd45f1ae8..6f593dfc2b 100644 --- a/platform/darwin/src/MGLAccountManager_Private.h +++ b/platform/darwin/src/MGLAccountManager_Private.h @@ -16,6 +16,7 @@ NS_ASSUME_NONNULL_BEGIN #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR /// The current global SKU. @property (class, atomic, readonly) NSString *skuToken; +@property (class, nonatomic) BOOL accountsSDKEnabled; #endif @end diff --git a/platform/darwin/src/http_file_source.mm b/platform/darwin/src/http_file_source.mm index 29f8f7db68..7835f20559 100644 --- a/platform/darwin/src/http_file_source.mm +++ b/platform/darwin/src/http_file_source.mm @@ -208,10 +208,19 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource, if (impl->accountType == 0 && ([url.host isEqualToString:@"mapbox.com"] || [url.host hasSuffix:@".mapbox.com"])) { NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; - NSArray *newQueryItems = @[ - [NSURLQueryItem queryItemWithName:@"events" value:@"true"], - [NSURLQueryItem queryItemWithName:@"sku" value:MGLAccountManager.skuToken] - ]; + + NSMutableArray *newQueryItems = [NSMutableArray arrayWithArray:@[ + [NSURLQueryItem queryItemWithName:@"events" value:@"true"] + ]]; + + // Only add the token if we have enabled the accounts SDK + if (MGLAccountManager.isAccountsSDKEnabled) + { + NSString *skuToken = MGLAccountManager.skuToken; + if (skuToken) { + [newQueryItems addObject:[NSURLQueryItem queryItemWithName:@"sku" value:skuToken]]; + } + } components.queryItems = components.queryItems ? [components.queryItems arrayByAddingObjectsFromArray:newQueryItems] : newQueryItems; diff --git a/platform/ios/src/MGLMapboxEvents.h b/platform/ios/src/MGLMapboxEvents.h index cb3132656f..0860290039 100644 --- a/platform/ios/src/MGLMapboxEvents.h +++ b/platform/ios/src/MGLMapboxEvents.h @@ -12,6 +12,7 @@ NS_ASSUME_NONNULL_BEGIN + (void)pushEvent:(NSString *)event withAttributes:(MMEMapboxEventAttributes *)attributeDictionary; + (void)flush; + (void)ensureMetricsOptoutExists; ++ (void)updateEventsManagerSkuId; @end diff --git a/platform/ios/src/MGLMapboxEvents.m b/platform/ios/src/MGLMapboxEvents.m index 5cbb178c2c..a1dee91697 100644 --- a/platform/ios/src/MGLMapboxEvents.m +++ b/platform/ios/src/MGLMapboxEvents.m @@ -1,6 +1,7 @@ #import "MGLMapboxEvents.h" #import "MBXSKUToken.h" #import "NSBundle+MGLAdditions.h" +#import "MGLAccountManager_Private.h" static NSString * const MGLAPIClientUserAgentBase = @"mapbox-maps-ios"; static NSString * const MGLMapboxAccountType = @"MGLMapboxAccountType"; @@ -144,12 +145,16 @@ static NSString * const MGLVariableGeofence = @"VariableGeofence"; [[MGLMapboxEvents sharedInstance] eventsManager].baseURL = [MGLMapboxEvents sharedInstance].baseURL; } - [[MGLMapboxEvents sharedInstance] eventsManager].skuId = MBXAccountsSKUIDMaps; + [self updateEventsManagerSkuId]; [self flush]; }); } ++ (void)updateEventsManagerSkuId { + [[self sharedInstance] eventsManager].skuId = MGLAccountManager.accountsSDKEnabled ? MBXAccountsSKUIDMaps : nil; +} + + (void)pushTurnstileEvent { [[[self sharedInstance] eventsManager] sendTurnstileEvent]; } |