From 8fad77faa4a49301cb80f25b3091ecd2ddd4aace Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Thu, 4 Feb 2016 17:06:13 -0600 Subject: [PATCH] [android] #2421 - Implementing dynamic user agent based on App Name, Version Name, and Version Code --- .../mapbox/mapboxsdk/telemetry/MapboxEvent.java | 2 +- .../mapboxsdk/telemetry/MapboxEventManager.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEvent.java index 8a0eccf2e..dc8c8ae4e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEvent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEvent.java @@ -4,7 +4,7 @@ import java.io.Serializable; public class MapboxEvent implements Serializable { public static final int VERSION_NUMBER = 1; - public static final String MGLMapboxEventsUserAgent = "Sirius/1.0/ANDROID MapboxEventsiOS/1.1"; + public static final String MGLMapboxEventsUserAgent = "MapboxEventsAndroid/1.1"; public static final String MGLMapboxEventsAPIBase = "https://api.tiles.mapbox.com"; // Event Types diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java index 0bdc19ccf..4dfc89e60 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.telemetry; import android.content.Context; import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.location.Location; import android.net.ConnectivityManager; @@ -43,6 +44,8 @@ public class MapboxEventManager { private static final String SESSION_UUID = UUID.randomUUID().toString(); + private String userAgent = MapboxEvent.MGLMapboxEventsUserAgent; + private MapboxEventManager(@NonNull Context context) { super(); this.accessToken = ApiAccess.getToken(context); @@ -53,6 +56,10 @@ public class MapboxEventManager { ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); String stagingURL = appInfo.metaData.getString(MapboxConstants.KEY_META_DATA_STAGING_SERVER); String stagingAccessToken = appInfo.metaData.getString(MapboxConstants.KEY_META_DATA_STAGING_ACCESS_TOKEN); + String appName = context.getPackageManager().getApplicationLabel(appInfo).toString(); + PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); + String versionName = packageInfo.versionName; + int versionCode = packageInfo.versionCode; if (!TextUtils.isEmpty(stagingURL)) { eventsURL = stagingURL; @@ -62,6 +69,11 @@ public class MapboxEventManager { this.accessToken = stagingAccessToken; } + // Build User Agent + if (!TextUtils.isEmpty(appName) && !TextUtils.isEmpty(versionName)) { + userAgent = appName + "/" + versionName + "/" + versionCode + " " + userAgent; + } + } catch (Exception e) { Log.e(TAG, "Error Trying to load Staging Credentials: " + e.toString()); } @@ -151,7 +163,7 @@ public class MapboxEventManager { Request request = new Request.Builder() .url(url) - .header("User-Agent", MapboxEvent.MGLMapboxEventsUserAgent) + .header("User-Agent", userAgent) .post(body) .build(); Response response = client.newCall(request).execute();