summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Zugaldia <antonio@mapbox.com>2019-04-22 12:35:20 -0400
committerŁukasz Paczos <lukas.paczos@gmail.com>2019-04-23 18:38:59 +0200
commit2502845c59ebb0a442653bbd62e31ee726fa2af6 (patch)
treee14a4913576085339e56d63d4589b474c7fcc90a
parentbc7ae969c40ea0d7de39ccf0451da94f61534d55 (diff)
downloadqtlocation-mapboxgl-upstream/az-sku-flag.tar.gz
[android] new manifest flag to enable/disable sku tokensupstream/az-sku-flag
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java64
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java1
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java10
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUrl.java6
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java4
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml5
6 files changed, 73 insertions, 17 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
index 4fd0200a37..d086b3329e 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
@@ -2,41 +2,74 @@ package com.mapbox.mapboxsdk;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.text.format.DateUtils;
import com.mapbox.android.accounts.v1.MapboxAccounts;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
+import com.mapbox.mapboxsdk.log.Logger;
/**
- * REMOVAL OR MODIFICATION OF THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS
- * OF SERVICE
+ * IF YOU USE THIS CODE WITH MAPBOX MAPPING API, REMOVAL OR MODIFICATION OF
+ * THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE.
*
- * The following code is used to access Mapbox's Mapping APIs.
+ * The following code is used to access Mapbox's Mapping APIs. Removal or
+ * modification of this code when used with Mapbox's Mapping APIs can result
+ * in higher fees and/or termination of your account with Mapbox.
*
- * Removal or modification of this code when used with Mapbox's Mapping APIs
- * can result in termination of your agreement and/or your account with
- * Mapbox.
+ * Under the Mapbox Terms of Service, you may not use this code to access
+ * Mapbox Mapping APIs other than through Mapbox SDKs.
*
- * Using this code to access Mapbox Mapping APIs from outside the Mapbox Maps
- * SDK also violates the Mapbox Terms of Service. On Android, Mapping APIs
- * should be accessed using the methods documented at
- * https://www.mapbox.com/android.
- *
- * You can access the Mapbox Terms of Service at https://www.mapbox.com/tos/
+ * The Android documentation to access Mapping APIs is available at
+ * https://www.mapbox.com/android and the Mapbox Terms of Service are
+ * available at https://www.mapbox.com/tos/.
*/
class AccountsManager {
+ private static final String TAG = "Mbgl-AccountsManager";
+
private static final String PREFERENCE_USER_ID = "com.mapbox.mapboxsdk.accounts.userid";
private static final String PREFERENCE_TIMESTAMP = "com.mapbox.mapboxsdk.accounts.timestamp";
private static final String PREFERENCE_SKU_TOKEN = "com.mapbox.mapboxsdk.accounts.skutoken";
private long timestamp;
+ @Nullable
private String skuToken;
+ private boolean isEnabled;
+
AccountsManager() {
- String userId = validateUserId();
- validateRotation(userId);
+ isEnabled = isSkuTokenEnabled();
+ if (isEnabled) {
+ String userId = validateUserId();
+ validateRotation(userId);
+ } else {
+ timestamp = 0L;
+ skuToken = null;
+ }
+ }
+
+ private boolean isSkuTokenEnabled() {
+ boolean value = MapboxConstants.DEFAULT_ENABLE_SKU_TOKEN;
+ try {
+ // Try getting a custom value from the app Manifest
+ ApplicationInfo appInfo = Mapbox.getApplicationContext().getPackageManager().getApplicationInfo(
+ Mapbox.getApplicationContext().getPackageName(),
+ PackageManager.GET_META_DATA);
+ if (appInfo.metaData != null) {
+ value = appInfo.metaData.getBoolean(
+ MapboxConstants.KEY_META_DATA_ENABLE_SKU_TOKEN,
+ MapboxConstants.DEFAULT_ENABLE_SKU_TOKEN
+ );
+ }
+ } catch (Exception exception) {
+ Logger.e(TAG, "Failed to read the package metadata: ", exception);
+ }
+
+ return value;
}
private String validateUserId() {
@@ -62,8 +95,9 @@ class AccountsManager {
}
}
+ @Nullable
String getSkuToken() {
- if (isExpired()) {
+ if (isEnabled && isExpired()) {
SharedPreferences sharedPreferences = getSharedPreferences();
String userId = sharedPreferences.getString(PREFERENCE_USER_ID, "");
skuToken = generateSkuToken(userId);
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
index 5a1c49a0a4..363d8469f4 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
@@ -96,6 +96,7 @@ public final class Mapbox {
*
* @return the SKU token
*/
+ @Nullable
public static String getSkuToken() {
return INSTANCE.accounts.getSkuToken();
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java
index ffcf8d74ec..6be803cb14 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java
@@ -38,6 +38,16 @@ public class MapboxConstants {
public static final boolean DEFAULT_MEASURE_TILE_DOWNLOAD_ON = false;
/**
+ * Key used to switch SKU token on/off in AndroidManifest.xml
+ */
+ public static final String KEY_META_DATA_ENABLE_SKU_TOKEN = "com.mapbox.EnableSkuToken";
+
+ /**
+ * Default value for KEY_META_DATA_ENABLE_SKU_TOKEN (default is off)
+ */
+ public static final boolean DEFAULT_ENABLE_SKU_TOKEN = false;
+
+ /**
* Unmeasured state
*/
public static final float UNMEASURED = -1f;
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUrl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUrl.java
index ec4d90cbc7..99d9cc4adf 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUrl.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUrl.java
@@ -24,7 +24,11 @@ public class HttpRequestUrl {
} else {
resourceUrl = resourceUrl + "&";
}
- resourceUrl = resourceUrl + "events=true&sku=" + Mapbox.getSkuToken();
+ if (Mapbox.getSkuToken() != null) {
+ resourceUrl = resourceUrl + "events=true&sku=" + Mapbox.getSkuToken();
+ } else {
+ resourceUrl = resourceUrl + "events=true";
+ }
}
return resourceUrl;
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java
index 944999715a..cd44e2591e 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java
@@ -41,7 +41,9 @@ public class TelemetryImpl implements TelemetryDefinition {
public void onAppUserTurnstileEvent() {
AppUserTurnstile turnstileEvent = new AppUserTurnstile(BuildConfig.MAPBOX_SDK_IDENTIFIER,
BuildConfig.MAPBOX_SDK_VERSION);
- turnstileEvent.setSkuId(MapboxAccounts.SKU_ID_MAPS_MAUS);
+ if (Mapbox.getSkuToken() != null) {
+ turnstileEvent.setSkuId(MapboxAccounts.SKU_ID_MAPS_MAUS);
+ }
telemetry.push(turnstileEvent);
telemetry.push(MapEventFactory.buildMapLoadEvent(new PhoneState(appContext)));
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml
index 53f6076a60..01f32b5406 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml
@@ -991,6 +991,11 @@
android:name="com.mapbox.MeasureTileDownloadOn"
android:value="false" />
+ <!-- Set value to true to have SKU tokens included in API requests -->
+ <meta-data
+ android:name="com.mapbox.EnableSkuToken"
+ android:value="true" />
+
</application>
</manifest> \ No newline at end of file