diff options
author | Jason Wray <friedbunny@users.noreply.github.com> | 2019-06-05 23:13:34 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-05 23:13:34 -0700 |
commit | bd3d19f5bdd7ac8e801fd3737a25a8b802e426ef (patch) | |
tree | 9a2c5c50cc6e856f0cd6b98a46e57705f015bf1e /platform/darwin | |
parent | 36361192b1b55a272b6115876ffe18be55f6b964 (diff) | |
download | qtlocation-mapboxgl-bd3d19f5bdd7ac8e801fd3737a25a8b802e426ef.tar.gz |
[ios] Update libmbxaccounts for navigation SDK override (#14802)
* Use a stringy selector... yerg.
* Bump to libmbxaccounts 1.0.0
Diffstat (limited to 'platform/darwin')
-rw-r--r-- | platform/darwin/src/MGLAccountManager.m | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/platform/darwin/src/MGLAccountManager.m b/platform/darwin/src/MGLAccountManager.m index cab9b16791..48750e1d49 100644 --- a/platform/darwin/src/MGLAccountManager.m +++ b/platform/darwin/src/MGLAccountManager.m @@ -8,9 +8,10 @@ #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR #import "MGLMapboxEvents.h" #import "MBXSKUToken.h" -#endif -static const NSTimeInterval MGLAccountManagerSKUTokenLifespan = 3600; +static NSString * const MGLAccountManagerExternalClassName = @"MBXAccounts"; +static NSString * const MGLAccountManagerExternalMethodName = @"skuToken"; +#endif @interface MGLAccountManager () @@ -18,9 +19,9 @@ static const NSTimeInterval MGLAccountManagerSKUTokenLifespan = 3600; @property (nonatomic) NSURL *apiBaseURL; #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR -@property (atomic) NSString *skuToken; -@property (atomic) NSDate *skuTokenExpiration; +@property BOOL useExternalAccountManager; #endif + @end @implementation MGLAccountManager @@ -42,7 +43,12 @@ static const NSTimeInterval MGLAccountManagerSKUTokenLifespan = 3600; } #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR - self.skuToken = [MBXSKUToken tokenForSKUID:MBXAccountsSKUIDMaps type:MBXAccountsSKUTypeUser]; + // Check if we should use an external accounts library (e.g., provided by navigation) + id externalAccountsClass = NSClassFromString(MGLAccountManagerExternalClassName); + SEL externalSKUTokenMethod = NSSelectorFromString(MGLAccountManagerExternalMethodName); + if (externalAccountsClass != nil && [externalAccountsClass respondsToSelector:externalSKUTokenMethod]) { + MGLAccountManager.sharedManager.useExternalAccountManager = YES; + } #endif } @@ -102,20 +108,14 @@ static const NSTimeInterval MGLAccountManagerSKUTokenLifespan = 3600; #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR -+ (void)setSkuToken:(NSString *)skuToken { - MGLAccountManager.sharedManager.skuTokenExpiration = [NSDate dateWithTimeIntervalSinceNow:MGLAccountManagerSKUTokenLifespan]; - MGLAccountManager.sharedManager.skuToken = skuToken; -} - + (NSString *)skuToken { - return [MGLAccountManager.sharedManager isSKUTokenExpired] ? - [MBXSKUToken tokenForSKUID:MBXAccountsSKUIDMaps type:MBXAccountsSKUTypeUser] : - MGLAccountManager.sharedManager.skuToken; -} - -- (BOOL)isSKUTokenExpired { - NSTimeInterval secondsUntilExpiration = [MGLAccountManager.sharedManager.skuTokenExpiration timeIntervalSinceNow]; - return secondsUntilExpiration < 0; + if (MGLAccountManager.sharedManager.useExternalAccountManager) { + id externalAccountsClass = NSClassFromString(MGLAccountManagerExternalClassName); + SEL externalSKUTokenMethod = NSSelectorFromString(MGLAccountManagerExternalMethodName); + return ((NSString *(*)(id, SEL))[externalAccountsClass methodForSelector:externalSKUTokenMethod])(externalAccountsClass, externalSKUTokenMethod); + } else { + return MBXSKUToken.skuToken; + } } #endif |