From d59d66a053c8d0ca1be3fc714ee7788f4331a923 Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Mon, 8 Feb 2016 12:10:00 -0800 Subject: [PATCH] [android] #2421 - Adding session id and rotate it every 12 hours --- .../mapboxsdk/telemetry/MapboxEvent.java | 1 + .../telemetry/MapboxEventManager.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) 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 dc8c8ae4e..0478b7143 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 @@ -40,6 +40,7 @@ public class MapboxEvent implements Serializable { // Event Attributes public static final String ATTRIBUTE_EVENT = "event"; + public static final String ATTRIBUTE_SESSION_ID = "sessionId"; public static final String ATTRIBUTE_VERSION = "version"; public static final String ATTRIBUTE_CREATED = "created"; public static final String ATTRIBUTE_INSTANCE = "instance"; 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 1339c4176..4be7e6633 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 @@ -65,6 +65,9 @@ public class MapboxEventManager { private String mapboxVendorId = null; + private String mapboxSessionId = null; + private static long hourInMillis = 1000 * 60 * 60; + private MapboxEventManager(@NonNull Context context) { super(); this.accessToken = ApiAccess.getToken(context); @@ -84,6 +87,9 @@ public class MapboxEventManager { Log.i(TAG, "Set New Vendor Id = " + vendorId); } + // Create Initial Session Id + rotateSessionId(); + // Get DisplayMetrics Setup displayMetrics = new DisplayMetrics(); ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(displayMetrics); @@ -141,6 +147,8 @@ public class MapboxEventManager { events.add(event); + rotateSessionId(); + // If size > 1 then flush if (events.size() >= 1) { new FlushTheEventsTask().execute(); @@ -148,6 +156,27 @@ public class MapboxEventManager { } + private void rotateSessionId() { + if (mapboxSessionId == null) { + mapboxSessionId = generateNewSessionId(); + return; + } + + // Rotate if it's been 12 hours and last event was over an hour ago + int start = mapboxSessionId.indexOf("-") + 1; + int end = mapboxSessionId.indexOf("-", start); + long time = Long.valueOf(mapboxSessionId.substring(start, end)); + + long now = System.currentTimeMillis(); + if (now - time > (12 * hourInMillis)) { + mapboxSessionId = generateNewSessionId(); + } + } + + private String generateNewSessionId() { + return context.getPackageName() + "-" + System.currentTimeMillis() + "-" + UUID.randomUUID().toString(); + } + private String getOrientation() { switch (context.getResources().getConfiguration().orientation) { case Configuration.ORIENTATION_LANDSCAPE: @@ -290,6 +319,7 @@ public class MapboxEventManager { // Basic Event Meta Data jsonObject.put(MapboxEvent.ATTRIBUTE_EVENT, evt.get("event")); + jsonObject.put(MapboxEvent.ATTRIBUTE_SESSION_ID, mapboxSessionId); jsonObject.put(MapboxEvent.ATTRIBUTE_VERSION, MapboxEvent.VERSION_NUMBER); jsonObject.put(MapboxEvent.ATTRIBUTE_CREATED, evt.get("created")); jsonObject.put(MapboxEvent.ATTRIBUTE_INSTANCE, SESSION_UUID);