Skip to content

Commit d089d50

Browse files
add new user agent api (#568)
1 parent 31a2e90 commit d089d50

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

mapbox/libandroid-telemetry/src/main/java/com/mapbox/services/android/telemetry/MapboxTelemetry.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535

3636
import java.io.IOException;
3737
import java.math.BigDecimal;
38+
import java.util.ArrayList;
3839
import java.util.Hashtable;
40+
import java.util.List;
3941
import java.util.Timer;
4042
import java.util.TimerTask;
4143
import java.util.Vector;
@@ -75,6 +77,15 @@ public class MapboxTelemetry implements Callback, LocationEngineListener {
7577
private Hashtable<String, Object> customTurnstileEvent = null;
7678
private int sessionIdRotationTime = TelemetryConstants.DEFAULT_SESSION_ID_ROTATION_HOURS;
7779
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+
};
7889

7990
/**
8091
* Private constructor for configuring the single instance per app.
@@ -187,6 +198,17 @@ public void setDebugLoggingEnabled(boolean debugLoggingEnabled) {
187198
}
188199
}
189200

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+
190212
/**
191213
* Checks that TelemetryService has been configured by developer
192214
*/
@@ -268,6 +290,17 @@ private void setUserAgent() {
268290
client.setUserAgent(fullUserAgent);
269291
}
270292

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+
271304
/**
272305
* Changes session ID based on time boundary
273306
*/

0 commit comments

Comments
 (0)