diff options
author | Jason Wray <friedbunny@users.noreply.github.com> | 2019-08-20 17:21:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-20 17:21:55 -0700 |
commit | 2f43a7b87b7d12298318cb6611ac9a7ef8868b09 (patch) | |
tree | 7344345ae5e93ded64814f63f33667a3df38ae82 /platform | |
parent | 5d1ed5d94194bcbd8c0a66e43e1f10eee0d5f278 (diff) | |
download | qtlocation-mapboxgl-2f43a7b87b7d12298318cb6611ac9a7ef8868b09.tar.gz |
[ios] Updates for offline pricing
Diffstat (limited to 'platform')
-rw-r--r-- | platform/darwin/src/MGLOfflineStorage.h | 10 | ||||
-rw-r--r-- | platform/darwin/src/http_file_source.mm | 10 | ||||
-rw-r--r-- | platform/darwin/test/MGLResourceTests.mm | 23 | ||||
-rw-r--r-- | platform/ios/CHANGELOG.md | 2 |
4 files changed, 31 insertions, 14 deletions
diff --git a/platform/darwin/src/MGLOfflineStorage.h b/platform/darwin/src/MGLOfflineStorage.h index 1ed364ddf3..d093bb938a 100644 --- a/platform/darwin/src/MGLOfflineStorage.h +++ b/platform/darwin/src/MGLOfflineStorage.h @@ -173,6 +173,11 @@ typedef NS_ENUM(NSUInteger, MGLResourceKind) { packs and ambient caching. All of this class’s instance methods are asynchronous, reflecting the fact that offline resources are stored in a database. The shared object maintains a canonical collection of offline packs in its `packs` property. + + Mapbox resources downloaded via this API are subject to separate Vector Tile and + Raster Tile API pricing and are not included in the Maps SDK’s “unlimited” requests. + See <a href="https://www.mapbox.com/pricing/">our pricing page</a> for more + information. #### Related examples See the <a href="https://docs.mapbox.com/ios/maps/examples/offline-pack/"> @@ -341,8 +346,7 @@ MGL_EXPORT attempt to download additional tiles until already downloaded tiles are removed by calling the `-removePack:withCompletionHandler:` method. - @note The <a href="https://www.mapbox.com/tos/">Mapbox Terms of Service</a> - prohibits changing or bypassing this limit without permission from Mapbox. + @param maximumCount The maximum number of tiles allowed to be downloaded. */ - (void)setMaximumAllowedMapboxTiles:(uint64_t)maximumCount; @@ -420,7 +424,7 @@ MGL_EXPORT - (void)resetDatabaseWithCompletionHandler:(void (^)(NSError *_Nullable error))completion; -/* +/** Inserts the provided resource into the ambient cache. This method mimics the caching that would take place if the equivalent resource diff --git a/platform/darwin/src/http_file_source.mm b/platform/darwin/src/http_file_source.mm index 5737d8b999..c2ed065ed8 100644 --- a/platform/darwin/src/http_file_source.mm +++ b/platform/darwin/src/http_file_source.mm @@ -205,13 +205,13 @@ NSURL *resourceURLWithAccountType(const Resource& resource, NSInteger accountTyp if (accountType == 0 && ([url.host isEqualToString:@"mapbox.com"] || [url.host hasSuffix:@".mapbox.com"])) { NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; - NSURLQueryItem *accountsQueryItem = [NSURLQueryItem queryItemWithName:@"sku" value:MGLAccountManager.skuToken]; - - NSMutableArray *queryItems = [NSMutableArray arrayWithObject:accountsQueryItem]; - - // offline here + NSMutableArray *queryItems = [NSMutableArray array]; + if (resource.usage == Resource::Usage::Offline) { [queryItems addObject:[NSURLQueryItem queryItemWithName:@"offline" value:@"true"]]; + } else { + // Only add SKU token to requests not tagged as "offline" usage. + [queryItems addObject:[NSURLQueryItem queryItemWithName:@"sku" value:MGLAccountManager.skuToken]]; } if (components.queryItems) { diff --git a/platform/darwin/test/MGLResourceTests.mm b/platform/darwin/test/MGLResourceTests.mm index 0420997c39..7fcccc535c 100644 --- a/platform/darwin/test/MGLResourceTests.mm +++ b/platform/darwin/test/MGLResourceTests.mm @@ -22,18 +22,28 @@ namespace mbgl { NSURL *url = [NSURL URLWithString:@(testURL.c_str())]; NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; NSArray<NSURLQueryItem *> *items = components.queryItems; - XCTAssert(items.count == 2 ); + XCTAssert(items.count == 2); } Resource resource(Resource::Kind::Unknown, testURL); - // By default, resource are NOT offline + // By default, resources are NOT offline { + bool skuTokenQueryItemFound; NSURL *url = resourceURLWithAccountType(resource, 0); NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; for (NSURLQueryItem *item in components.queryItems) { XCTAssertFalse([item.name isEqualToString:@"offline"]); + if ([item.name isEqualToString:@"sku"]) { + skuTokenQueryItemFound = YES; + } } + +#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR + XCTAssertTrue(skuTokenQueryItemFound, "Default resource URL should have SKU token query item"); +#else + XCTAssertFalse(skuTokenQueryItemFound, "Non-iOS platforms should not have a SKU token query item"); +#endif } // Now check offline @@ -43,20 +53,20 @@ namespace mbgl { NSURL *url = resourceURLWithAccountType(resource, 0); NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; - // For offline, we expect a single offline param and a sku param + // For offline, we expect a single offline query item NSInteger foundCount = 0; #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR for (NSURLQueryItem *item in components.queryItems) { if (([item.name isEqualToString:@"offline"] && [item.value isEqualToString:@"true"]) || ([item.name isEqualToString:@"a"] && [item.value isEqualToString:@"one"]) || - ([item.name isEqualToString:@"b"] && [item.value isEqualToString:@"two"]) || - ([item.name isEqualToString:@"sku"])) { + ([item.name isEqualToString:@"b"] && [item.value isEqualToString:@"two"])) { foundCount++; } + XCTAssertFalse([item.name isEqualToString:@"sku"]); } - XCTAssert(foundCount == 4); + XCTAssert(foundCount == 3); #else // NOTE: Currently the macOS SDK does not supply the sku or offline query parameters for (NSURLQueryItem *item in components.queryItems) { @@ -64,6 +74,7 @@ namespace mbgl { ([item.name isEqualToString:@"b"] && [item.value isEqualToString:@"two"])) { foundCount++; } + XCTAssertFalse([item.name isEqualToString:@"sku"]); } XCTAssert(foundCount == 2); diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 37612a89b8..b49970eecf 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -9,6 +9,8 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT ## 5.3.0 +This release changes how offline tile requests are billed — they are now billed on a pay-as-you-go basis and all developers are able raise the offline tile limit for their users. Offline requests were previously exempt from monthly active user (MAU) billing and increasing the offline per-user tile limit to more than 6,000 tiles required the purchase of an enterprise license. By upgrading to this release, you are opting into the changes outlined in [this blog post](https://blog.mapbox.com/offline-maps-for-all-bb0fc51827be) and [#15380](https://github.com/mapbox/mapbox-gl-native/pull/15380). + ### Styles and rendering * Fixed flickering on style change for the same tile set. ([#15127](https://github.com/mapbox/mapbox-gl-native/pull/15127)) |