diff --git a/platform/android/LICENSE.md b/platform/android/LICENSE.md index b269437fe68..35ae99120f8 100644 --- a/platform/android/LICENSE.md +++ b/platform/android/LICENSE.md @@ -71,12 +71,6 @@ License: [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) =========================================================================== -Mapbox GL uses portions of the Mapbox Accounts SDK for Android. -URL: [https://github.com/mapbox/mapbox-accounts-android](https://github.com/mapbox/mapbox-accounts-android) -License: [Mapbox Terms of Service](https://www.mapbox.com/tos/) - -=========================================================================== - Mapbox GL uses portions of the Mapbox Android Core Library. URL: [https://github.com/mapbox/mapbox-events-android](https://github.com/mapbox/mapbox-events-android) License: [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle index 510dc79d431..108f6315d86 100644 --- a/platform/android/MapboxGLAndroidSDK/build.gradle +++ b/platform/android/MapboxGLAndroidSDK/build.gradle @@ -7,7 +7,6 @@ dependencies { api dependenciesList.mapboxAndroidTelemetry api dependenciesList.mapboxJavaGeoJSON api dependenciesList.mapboxAndroidGestures - api dependenciesList.mapboxAndroidAccounts implementation dependenciesList.mapboxJavaTurf implementation dependenciesList.supportAnnotations implementation dependenciesList.supportFragmentV4 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 deleted file mode 100644 index d086b3329eb..00000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java +++ /dev/null @@ -1,146 +0,0 @@ -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; - -/** - * 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. 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. - * - * Under the Mapbox Terms of Service, you may not use this code to access - * Mapbox Mapping APIs other than through Mapbox SDKs. - * - * 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() { - 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() { - SharedPreferences sharedPreferences = getSharedPreferences(); - String userId = sharedPreferences.getString(PREFERENCE_USER_ID, ""); - if (TextUtils.isEmpty(userId)) { - userId = generateUserId(); - SharedPreferences.Editor editor = getSharedPreferences().edit(); - editor.putString(PREFERENCE_USER_ID, userId); - editor.apply(); - } - - return userId; - } - - private void validateRotation(String userId) { - SharedPreferences sharedPreferences = getSharedPreferences(); - timestamp = sharedPreferences.getLong(PREFERENCE_TIMESTAMP, 0L); - skuToken = sharedPreferences.getString(PREFERENCE_SKU_TOKEN, ""); - if (timestamp == 0L || TextUtils.isEmpty(skuToken)) { - skuToken = generateSkuToken(userId); - timestamp = persistRotation(skuToken); - } - } - - @Nullable - String getSkuToken() { - if (isEnabled && isExpired()) { - SharedPreferences sharedPreferences = getSharedPreferences(); - String userId = sharedPreferences.getString(PREFERENCE_USER_ID, ""); - skuToken = generateSkuToken(userId); - timestamp = persistRotation(skuToken); - } - - return skuToken; - } - - private boolean isExpired() { - return isExpired(getNow(), timestamp); - } - - static boolean isExpired(long now, long then) { - return ((now - then) > DateUtils.HOUR_IN_MILLIS); - } - - private long persistRotation(String skuToken) { - long now = getNow(); - SharedPreferences.Editor editor = getSharedPreferences().edit(); - editor.putLong(PREFERENCE_TIMESTAMP, now); - editor.putString(PREFERENCE_SKU_TOKEN, skuToken); - editor.apply(); - return now; - } - - @NonNull - private SharedPreferences getSharedPreferences() { - return Mapbox.getApplicationContext() - .getSharedPreferences(MapboxConstants.MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE); - } - - static long getNow() { - return System.currentTimeMillis(); - } - - @NonNull - private String generateUserId() { - return MapboxAccounts.obtainEndUserId(); - } - - @NonNull - private String generateSkuToken(String userId) { - return MapboxAccounts.obtainMapsSkuUserToken(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 363d8469f45..f5304017a5c 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 @@ -34,8 +34,6 @@ public final class Mapbox { private String accessToken; @Nullable private TelemetryDefinition telemetry; - @Nullable - private AccountsManager accounts; /** * Get an instance of Mapbox. @@ -58,7 +56,6 @@ public static synchronized Mapbox getInstance(@NonNull Context context, @Nullabl INSTANCE = new Mapbox(appContext, accessToken); if (isAccessTokenValid(accessToken)) { initializeTelemetry(); - INSTANCE.accounts = new AccountsManager(); } ConnectivityReceiver.instance(appContext); } @@ -90,17 +87,6 @@ public static void setAccessToken(String accessToken) { FileSource.getInstance(getApplicationContext()).setAccessToken(accessToken); } - /** - * Returns a SKU token, refreshed if necessary. This method is meant for internal SDK - * usage only. - * - * @return the SKU token - */ - @Nullable - public static String getSkuToken() { - return INSTANCE.accounts.getSkuToken(); - } - /** * Application context * 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 6be803cb14a..2b69646fcc6 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 @@ -12,11 +12,6 @@ public class MapboxConstants { */ public static final Locale MAPBOX_LOCALE = Locale.US; - /** - * The name of the desired preferences file for Android's SharedPreferences. - */ - public static final String MAPBOX_SHARED_PREFERENCES = "MapboxSharedPreferences"; - /** * Key used to switch storage to external in AndroidManifest.xml */ @@ -37,16 +32,6 @@ 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 */ 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 99d9cc4adf7..37e38696923 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 @@ -2,8 +2,6 @@ import android.support.annotation.NonNull; -import com.mapbox.mapboxsdk.Mapbox; - public class HttpRequestUrl { private HttpRequestUrl() { @@ -24,11 +22,7 @@ public static String buildResourceUrl(@NonNull String host, String resourceUrl, } else { resourceUrl = resourceUrl + "&"; } - if (Mapbox.getSkuToken() != null) { - resourceUrl = resourceUrl + "events=true&sku=" + Mapbox.getSkuToken(); - } else { - resourceUrl = resourceUrl + "events=true"; - } + 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 cd44e2591e0..46a0c47d502 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 @@ -4,8 +4,8 @@ import android.os.Bundle; import android.support.annotation.FloatRange; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; -import com.mapbox.android.accounts.v1.MapboxAccounts; import com.mapbox.android.telemetry.AppUserTurnstile; import com.mapbox.android.telemetry.MapboxTelemetry; import com.mapbox.android.telemetry.SessionInterval; @@ -21,8 +21,9 @@ public class TelemetryImpl implements TelemetryDefinition { - private final MapboxTelemetry telemetry; - private final Context appContext; + @Nullable + private MapboxTelemetry telemetry; + private Context appContext; public TelemetryImpl() { appContext = Mapbox.getApplicationContext(); @@ -41,9 +42,6 @@ public TelemetryImpl() { public void onAppUserTurnstileEvent() { AppUserTurnstile turnstileEvent = new AppUserTurnstile(BuildConfig.MAPBOX_SDK_IDENTIFIER, BuildConfig.MAPBOX_SDK_VERSION); - 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/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java index cc4988b5493..db99f255ace 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java @@ -31,6 +31,7 @@ public class FileSource { private static final String TAG = "Mbgl-FileSource"; + private static final String MAPBOX_SHARED_PREFERENCES = "MapboxSharedPreferences"; private static final String MAPBOX_SHARED_PREFERENCE_RESOURCES_CACHE_PATH = "fileSourceResourcesCachePath"; private static final Lock resourcesCachePathLoaderLock = new ReentrantLock(); private static final Lock internalCachePathLoaderLock = new ReentrantLock(); @@ -106,8 +107,7 @@ public static synchronized FileSource getInstance(@NonNull Context context) { */ @NonNull private static String getCachePath(@NonNull Context context) { - SharedPreferences preferences = context.getSharedPreferences( - MapboxConstants.MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE); + SharedPreferences preferences = context.getSharedPreferences(MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE); String cachePath = preferences.getString(MAPBOX_SHARED_PREFERENCE_RESOURCES_CACHE_PATH, null); if (!isPathWritable(cachePath)) { @@ -116,7 +116,7 @@ private static String getCachePath(@NonNull Context context) { // Reset stored cache path SharedPreferences.Editor editor = - context.getSharedPreferences(MapboxConstants.MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE).edit(); + context.getSharedPreferences(MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE).edit(); editor.remove(MAPBOX_SHARED_PREFERENCE_RESOURCES_CACHE_PATH).apply(); } @@ -306,7 +306,7 @@ public void onWritePermissionGranted() { callback.onError(fileSourceActivatedMessage); } else { final SharedPreferences.Editor editor = - context.getSharedPreferences(MapboxConstants.MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE).edit(); + context.getSharedPreferences(MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE).edit(); editor.putString(MAPBOX_SHARED_PREFERENCE_RESOURCES_CACHE_PATH, path); editor.apply(); setResourcesCachePath(context, path); diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/AccountsManagerTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/AccountsManagerTest.java deleted file mode 100644 index 3f846e66401..00000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/AccountsManagerTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.mapbox.mapboxsdk; - -import android.text.format.DateUtils; - -import org.junit.Assert; -import org.junit.Test; - -public class AccountsManagerTest { - @Test - public void testIsExpired() { - long now = AccountsManager.getNow(); - - long defaultValue = 0L; - long tooOld = now - DateUtils.HOUR_IN_MILLIS - 1; - long futureValue = now + 1; - long immediatePast = now - 1; - - Assert.assertTrue(AccountsManager.isExpired(now, defaultValue)); - Assert.assertTrue(AccountsManager.isExpired(now, tooOld)); - - Assert.assertFalse(AccountsManager.isExpired(now, futureValue)); - Assert.assertFalse(AccountsManager.isExpired(now, immediatePast)); - } -} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index 01f32b54067..53f6076a60c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -991,11 +991,6 @@ android:name="com.mapbox.MeasureTileDownloadOn" android:value="false" /> - - - \ No newline at end of file diff --git a/platform/android/gradle/dependencies.gradle b/platform/android/gradle/dependencies.gradle index e1c8196b027..bd37d7fbd57 100644 --- a/platform/android/gradle/dependencies.gradle +++ b/platform/android/gradle/dependencies.gradle @@ -11,7 +11,6 @@ ext { mapboxTelemetry : '4.4.1', mapboxCore : '1.3.0', mapboxGestures : '0.4.2', - mapboxAccounts : '0.1.0', supportLib : '27.1.1', constraintLayout: '1.1.2', uiAutomator : '2.1.3', @@ -40,7 +39,6 @@ ext { mapboxJavaGeoJSON : "com.mapbox.mapboxsdk:mapbox-sdk-geojson:${versions.mapboxServices}", mapboxAndroidTelemetry : "com.mapbox.mapboxsdk:mapbox-android-telemetry:${versions.mapboxTelemetry}", mapboxAndroidGestures : "com.mapbox.mapboxsdk:mapbox-android-gestures:${versions.mapboxGestures}", - mapboxAndroidAccounts : "com.mapbox.mapboxsdk:mapbox-android-accounts:${versions.mapboxAccounts}", mapboxJavaTurf : "com.mapbox.mapboxsdk:mapbox-sdk-turf:${versions.mapboxServices}", junit : "junit:junit:${versions.junit}",