summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Rex <julian.rex@mapbox.com>2019-04-19 15:43:47 -0400
committerJulian Rex <julian.rex@mapbox.com>2019-04-24 11:21:00 -0400
commit953e12ded2d93ac3efaf92dcad08f878d271db81 (patch)
tree26458318d8ba538e4ac64dc2073d960577fe8611
parent261da437889670aaeb8849f1747e7deb6258caaa (diff)
downloadqtlocation-mapboxgl-953e12ded2d93ac3efaf92dcad08f878d271db81.tar.gz
[ios] Enable/Disable sku token handling
-rw-r--r--platform/darwin/src/MGLAccountManager.m38
-rw-r--r--platform/darwin/src/MGLAccountManager_Private.h1
-rw-r--r--platform/darwin/src/http_file_source.mm17
-rw-r--r--platform/ios/src/MGLMapboxEvents.h1
-rw-r--r--platform/ios/src/MGLMapboxEvents.m7
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];
}