mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-02-14 17:53:03 -05:00
feat(analytics): Enhance user privacy (#4540)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
@@ -126,6 +126,14 @@
|
||||
android:name="firebase_analytics_collection_enabled"
|
||||
android:value="false" />
|
||||
|
||||
<!-- Disable AdID collection for privacy -->
|
||||
<meta-data
|
||||
android:name="google_analytics_adid_collection_enabled"
|
||||
android:value="false" />
|
||||
<meta-data
|
||||
android:name="google_analytics_default_allow_ad_personalization_signals"
|
||||
android:value="false" />
|
||||
|
||||
<!-- This is the public API for doing mesh radio operations from android apps -->
|
||||
<service
|
||||
android:name="com.geeksville.mesh.service.MeshService"
|
||||
|
||||
@@ -36,8 +36,6 @@ dependencies {
|
||||
googleApi(libs.dd.sdk.android.compose)
|
||||
googleApi(libs.dd.sdk.android.logs)
|
||||
googleApi(libs.dd.sdk.android.rum)
|
||||
googleApi(libs.dd.sdk.android.session.replay)
|
||||
googleApi(libs.dd.sdk.android.session.replay.compose)
|
||||
googleApi(libs.dd.sdk.android.timber)
|
||||
googleApi(libs.dd.sdk.android.trace)
|
||||
googleApi(libs.dd.sdk.android.trace.otel)
|
||||
|
||||
@@ -40,11 +40,6 @@ import com.datadog.android.rum.GlobalRumMonitor
|
||||
import com.datadog.android.rum.Rum
|
||||
import com.datadog.android.rum.RumConfiguration
|
||||
import com.datadog.android.rum.tracking.AcceptAllNavDestinations
|
||||
import com.datadog.android.sessionreplay.ImagePrivacy
|
||||
import com.datadog.android.sessionreplay.SessionReplay
|
||||
import com.datadog.android.sessionreplay.SessionReplayConfiguration
|
||||
import com.datadog.android.sessionreplay.TextAndInputPrivacy
|
||||
import com.datadog.android.sessionreplay.compose.ComposeExtensionSupport
|
||||
import com.datadog.android.trace.Trace
|
||||
import com.datadog.android.trace.TraceConfiguration
|
||||
import com.datadog.android.trace.opentelemetry.DatadogOpenTelemetry
|
||||
@@ -91,13 +86,13 @@ constructor(
|
||||
}
|
||||
|
||||
init {
|
||||
initDatadog(context as Application, analyticsPrefs)
|
||||
initCrashlytics(context, analyticsPrefs)
|
||||
initDatadog(context as Application)
|
||||
initCrashlytics(context as Application)
|
||||
|
||||
val datadogLogger =
|
||||
Logger.Builder()
|
||||
.setService(SERVICE_NAME)
|
||||
.setNetworkInfoEnabled(true)
|
||||
.setNetworkInfoEnabled(false) // Disable to avoid collecting Local IP/SSID
|
||||
.setRemoteSampleRate(sampleRate)
|
||||
.setBundleWithTraceEnabled(true)
|
||||
.setBundleWithRumEnabled(true)
|
||||
@@ -122,7 +117,7 @@ constructor(
|
||||
.launchIn(ProcessLifecycleOwner.get().lifecycleScope)
|
||||
}
|
||||
|
||||
private fun initDatadog(application: Application, analyticsPrefs: AnalyticsPrefs) {
|
||||
private fun initDatadog(application: Application) {
|
||||
val configuration =
|
||||
Configuration.Builder(
|
||||
clientToken = BuildConfig.datadogClientToken,
|
||||
@@ -135,7 +130,6 @@ constructor(
|
||||
.build()
|
||||
// Initialize with PENDING, consent will be updated via updateAnalyticsConsent
|
||||
Datadog.initialize(application, configuration, TrackingConsent.PENDING)
|
||||
Datadog.setUserInfo(analyticsPrefs.installId)
|
||||
Datadog.setVerbosity(if (BuildConfig.DEBUG) android.util.Log.DEBUG else android.util.Log.WARN)
|
||||
|
||||
val rumConfiguration =
|
||||
@@ -154,23 +148,17 @@ constructor(
|
||||
val logsConfig = LogsConfiguration.Builder().build()
|
||||
Logs.enable(logsConfig)
|
||||
|
||||
val traceConfig = TraceConfiguration.Builder().setNetworkInfoEnabled(true).build()
|
||||
val traceConfig = TraceConfiguration.Builder().setNetworkInfoEnabled(false).build()
|
||||
Trace.enable(traceConfig)
|
||||
|
||||
GlobalOpenTelemetry.set(DatadogOpenTelemetry(serviceName = SERVICE_NAME))
|
||||
|
||||
val sessionReplayConfig =
|
||||
SessionReplayConfiguration.Builder(sampleRate = sampleRate)
|
||||
.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)
|
||||
.setImagePrivacy(ImagePrivacy.MASK_ALL)
|
||||
.addExtensionSupport(ComposeExtensionSupport())
|
||||
.build()
|
||||
SessionReplay.enable(sessionReplayConfig)
|
||||
// Session Replay disabled to reduce PII collection as requested
|
||||
}
|
||||
|
||||
private fun initCrashlytics(application: Application, analyticsPrefs: AnalyticsPrefs) {
|
||||
private fun initCrashlytics(application: Application) {
|
||||
Firebase.initialize(application)
|
||||
Firebase.crashlytics.setUserId(analyticsPrefs.installId)
|
||||
// User ID tracking disabled to avoid collecting Unique Identifier PII
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user