Allow DD initialization from the native side using DdSdkConfiguration
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- android, kotlin, react-native, typescript
Línea de trabajo
Comienza con android/src/main/kotlin/com/datadog/reactnative/DdSdkNativeInitialization.kt y el punto de entrada initFromNative existente; después, revisa cómo se pasa DdSdkConfiguration a través de la inicialización nativa. Revisa el uso de JavaScript FileBasedConfiguration y DatadogProvider descrito en el issue. La tarea estará terminada cuando el inicio nativo pueda usar una DdSdkConfiguration en tiempo de ejecución sin requerir un archivo JSON del repositorio.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature description
Hello! We have an app with a lot of native code that initializes before the JS side and runs in the background. The native code needs the ability to send logs to DD, and so the SDK must be initialized on application start.
Recently dd-sdk-reactnative added the new DdSdkNativeInitialization.initFromNative API to load configuration from JSON file. Unfortunately, it is a bit limiting since JSON configurations need to be stored in the repo, and it doesn't support environment variables or build environments.
Proposed solution
It would be nice to be able to init dd-sdk-reactnative with just DdSdkConfiguration instance. That would fix the limitations since we can generate it in the runtime using BuildConfig for tokens.
Here is the patch I ended up with:
diff --git a/node_modules/@datadog/mobile-react-native/android/src/main/kotlin/com/datadog/reactnative/DdSdkNativeInitialization.kt b/node_modules/@datadog/mobile-react-native/android/src/main/kotlin/com/datadog/reactnative/DdSdkNativeInitialization.kt
index 1b352a1..d6e6028 100644
--- a/node_modules/@datadog/mobile-react-native/android/src/main/kotlin/com/datadog/reactnative/DdSdkNativeInitialization.kt
+++ b/node_modules/@datadog/mobile-react-native/android/src/main/kotlin/com/datadog/reactnative/DdSdkNativeInitialization.kt
@@ -345,6 +345,24 @@ class DdSdkNativeInitialization internal constructor(
)
}
}
+
+ /**
+ * Initializes the Datadog React Native SDK using the provided configuration.
+ */
+ @JvmStatic
+ fun initFromNative(appContext: Context, ddSdkConfiguration: DdSdkConfiguration) {
+ val nativeInitialization = DdSdkNativeInitialization(appContext.applicationContext)
+ try {
+ nativeInitialization.initialize(ddSdkConfiguration)
+ } catch (@Suppress("TooGenericExceptionCaught") error: Exception) {
+ Log.w(
+ DdSdkNativeInitialization::class.java.canonicalName,
+ "Failed to initialize the Datadog SDK: $error"
+ )
+ }
+ }
}
}
Alternatively, making internal constructor public also works.
Other relevant information
For more context, this is how my whole setup works:
- On application start, I initialize a new
DdSdkConfigurationwith settings based on runtime / build environment. - Then I initialize dd-sdk-reactnative via
DdSdkNativeInitialization.initFromNativewithDdSdkConfiguration. - I also have a native module that provides access to the current
DdSdkConfigurationto the JS side (it generatesdatadog-configuration.jsonfromDdSdkConfiguration). - When JS side starts, I initialize
DatadogProviderlike this:
const config = new FileBasedConfiguration({
configuration: NativeModules.Telemetry.datadogConfiguration(),
});
<DatadogProvider configuration={config}>{children}</DatadogProvider>
- Lenguaje dominante
- TypeScript
- Estrellas
- 146
- Forks
- 63
- Merge medio
- 1 d 11 h
- PR fusionados (30 d)
- 13
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de DataDog/dd-sdk-reactnative
-
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
DataDog/dd-sdk-reactnative#1426 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
DataDog/dd-sdk-reactnative#1377 · 1 comentario · 1 reacción ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
DataDog/dd-sdk-reactnative#1353 · 1 comentario ·
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
DataDog/dd-sdk-reactnative#1338 · 2 comentarios ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
DataDog/dd-sdk-reactnative#1327 ·
Todos los issues de DataDog/dd-sdk-reactnative
Issues similares
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100