|
35 | 35 |
|
36 | 36 | import java.io.IOException; |
37 | 37 | import java.math.BigDecimal; |
| 38 | +import java.util.ArrayList; |
38 | 39 | import java.util.Hashtable; |
| 40 | +import java.util.List; |
39 | 41 | import java.util.Timer; |
40 | 42 | import java.util.TimerTask; |
41 | 43 | import java.util.Vector; |
@@ -75,6 +77,15 @@ public class MapboxTelemetry implements Callback, LocationEngineListener { |
75 | 77 | private Hashtable<String, Object> customTurnstileEvent = null; |
76 | 78 | private int sessionIdRotationTime = TelemetryConstants.DEFAULT_SESSION_ID_ROTATION_HOURS; |
77 | 79 | private boolean debugLoggingEnabled = false; |
| 80 | + private static final List<String> VALID_USER_AGENTS = new ArrayList<String>() { |
| 81 | + { |
| 82 | + add("MapboxEventsAndroid/"); |
| 83 | + add("MapboxTelemetryAndroid/"); |
| 84 | + add("MapboxEventsUnityAndroid/"); |
| 85 | + add("mapbox-navigation-android/"); |
| 86 | + add("mapbox-navigation-ui-android/"); |
| 87 | + } |
| 88 | + }; |
78 | 89 |
|
79 | 90 | /** |
80 | 91 | * Private constructor for configuring the single instance per app. |
@@ -187,6 +198,17 @@ public void setDebugLoggingEnabled(boolean debugLoggingEnabled) { |
187 | 198 | } |
188 | 199 | } |
189 | 200 |
|
| 201 | + // For internal use only |
| 202 | + // This is an experimental API. Experimental APIs are quickly evolving and |
| 203 | + // might change or be removed in minor versions. |
| 204 | + @Experimental |
| 205 | + public void newUserAgent(String userAgent) { |
| 206 | + if (isUserAgentValid(userAgent)) { |
| 207 | + this.userAgent = userAgent; |
| 208 | + setUserAgent(); |
| 209 | + } |
| 210 | + } |
| 211 | + |
190 | 212 | /** |
191 | 213 | * Checks that TelemetryService has been configured by developer |
192 | 214 | */ |
@@ -268,6 +290,17 @@ private void setUserAgent() { |
268 | 290 | client.setUserAgent(fullUserAgent); |
269 | 291 | } |
270 | 292 |
|
| 293 | + private boolean isUserAgentValid(String userAgent) { |
| 294 | + if (!TextUtils.isEmpty(userAgent)) { |
| 295 | + for (String userAgentPrefix : VALID_USER_AGENTS) { |
| 296 | + if (userAgent.startsWith(userAgentPrefix)) { |
| 297 | + return true; |
| 298 | + } |
| 299 | + } |
| 300 | + } |
| 301 | + return false; |
| 302 | + } |
| 303 | + |
271 | 304 | /** |
272 | 305 | * Changes session ID based on time boundary |
273 | 306 | */ |
|
0 commit comments