Configuración de monitorización de RUM iOS y tvOS
Datadog Real User Monitoring (RUM) te permite visualizar y analizar el rendimiento en tiempo real y los recorridos de cada usuario de tu aplicación.
Configuración
- Declarar el SDK como dependencia.
- Especificar los detalles de la aplicación en la interfaz de usuario
- Inicializar la biblioteca.
- Inicializa el monitor de RUM,
DatadogURLSessionDelegate
, para iniciar el envío de datos.
Nota: La versión mínima compatible con el SDK de Datadog iOS es iOS v11+. El SDK de Datadog iOS también es compatible con tvOS.
Declarar el SDK como dependencia
Declara la biblioteca como una dependencia en función de tu gestor de paquetes. El Swift Package Manager (SPM) es recomendado.
Para integrar con Swift Package Manager de Apple, añade lo siguiente como una dependencia a tu Package.swift
:
.package(url: "https://github.com/Datadog/dd-sdk-ios.git", .upToNextMajor(from: "2.0.0"))
En tu proyecto, vincula las siguientes bibliotecas:
Puedes utilizar CocoaPods para instalar dd-sdk-ios
:
pod 'DatadogCore'
pod 'DatadogRUM'
Puedes utilizar Carthage para instalar dd-sdk-ios
:
github "DataDog/dd-sdk-ios"
En Xcode, vincula los siguientes marcos:
DatadogInternal.xcframework
DatadogCore.xcframework
DatadogRUM.xcframework
Especificar los detalles de la aplicación en la interfaz de usuario
Ve a Digital Experience > Add an Application (Experiencia digital > Añadir una aplicación).
Selecciona iOS
como tipo de aplicación e introduce un nombre de aplicación para generar un ID de aplicación de Datadog y un token de cliente únicos.
Para instrumentar tus vistas web, haz clic en el conmutador Instrument your webviews (Instrumentar tus vistas web). Para obtener más información, consulta Rastreo de vistas web.
Para deshabilitar la recopilación automática de datos del usuario, ya sea para la IP del cliente o los datos de geolocalización, desmarca las casillas para esas configuraciones. Para obtener más información, consulta Datos recopilados de RUM iOS.
Para asegurar la seguridad de tus datos, debes utilizar un token de cliente. Si solo utilizaras claves de API de Datadog para configurar la biblioteca dd-sdk-ios
, estarían expuestos del lado del cliente en el código de byte de la aplicación de iOS.
Para más información sobre cómo configurar un token de cliente, consulta la documentación sobre tokens de cliente.
Inicializar la biblioteca
En el fragmento de inicialización, establece un nombre de entorno, un nombre de servicio y un número de versión. En los ejemplos siguientes, app-name
especifica la variante de la aplicación que genera datos.
Para más información, consulta Uso de etiquetas.
import DatadogCore
Datadog.initialize(
with: Datadog.Configuration(
clientToken: "<client token>",
env: "<environment>",
service: "<service name>"
),
trackingConsent: trackingConsent
)
@import DatadogObjc;
DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"<client token>" env:@"<environment>"];
configuration.service = @"<service name>";
[DDDatadog initializeWithConfiguration:configuration
trackingConsent:trackingConsent];
import DatadogCore
Datadog.initialize(
with: Datadog.Configuration(
clientToken: "<client token>",
env: "<environment>",
site: .eu1,
service: "<service name>"
),
trackingConsent: trackingConsent
)
@import DatadogObjc;
DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"<client token>" env:@"<environment>"];
configuration.service = @"<service name>";
configuration.site = [DDSite eu1];
[DDDatadog initializeWithConfiguration:configuration
trackingConsent:trackingConsent];
import DatadogCore
Datadog.initialize(
with: Datadog.Configuration(
clientToken: "<client token>",
env: "<environment>",
site: .us3,
service: "<service name>"
),
trackingConsent: trackingConsent
)
@import DatadogObjc;
DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"<client token>" env:@"<environment>"];
configuration.service = @"<service name>";
configuration.site = [DDSite us3];
[DDDatadog initializeWithConfiguration:configuration
trackingConsent:trackingConsent];
import DatadogCore
Datadog.initialize(
with: Datadog.Configuration(
clientToken: "<client token>",
env: "<environment>",
site: .us5,
service: "<service name>"
),
trackingConsent: trackingConsent
)
@import DatadogObjc;
DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"<client token>" env:@"<environment>"];
configuration.service = @"<service name>";
configuration.site = [DDSite us5];
[DDDatadog initializeWithConfiguration:configuration
trackingConsent:trackingConsent];
import DatadogCore
Datadog.initialize(
with: Datadog.Configuration(
clientToken: "<client token>",
env: "<environment>",
site: .us1_fed,
service: "<service name>"
),
trackingConsent: trackingConsent
)
@import DatadogObjc;
DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"<client token>" env:@"<environment>"];
configuration.service = @"<service name>";
configuration.site = [DDSite us1_fed];
[DDDatadog initializeWithConfiguration:configuration
trackingConsent:trackingConsent];
import DatadogCore
Datadog.initialize(
with: Datadog.Configuration(
clientToken: "<client token>",
env: "<environment>",
site: .ap1,
service: "<service name>"
),
trackingConsent: trackingConsent
)
@import DatadogObjc;
DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"<client token>" env:@"<environment>"];
configuration.service = @"<service name>";
configuration.site = [DDSite ap1];
[DDDatadog initializeWithConfiguration:configuration
trackingConsent:trackingConsent];
El SDK de RUM iOS rastrea automáticamente las sesiones de usuario en función de las opciones proporcionadas en la inicialización del SDK. Para añadir el cumplimiento de GDPR para tus usuarios de EU y otros parámetros de inicialización a la configuración del SDK, consulta la documentación de Establecer el consentimiento de rastreo.
Inicializar el monitor de RUM y activar URLSessionInstrumentation
Configura y registra el monitor de RUM. Solo tienes que hacerlo una vez, normalmente en tu código AppDelegate
:
import DatadogRUM
RUM.enable(
with: RUM.Configuration(
applicationID: "<rum application id>",
uiKitViewsPredicate: DefaultUIKitRUMViewsPredicate(),
uiKitActionsPredicate: DefaultUIKitRUMActionsPredicate(),
urlSessionTracking: RUM.Configuration.URLSessionTracking()
)
)
@import DatadogObjc;
DDRUMConfiguration *configuration = [[DDRUMConfiguration alloc] initWithApplicationID:@"<rum application id>"];
configuration.uiKitViewsPredicate = [DDDefaultUIKitRUMViewsPredicate new];
configuration.uiKitActionsPredicate = [DDDefaultUIKitRUMActionsPredicate new];
[configuration setURLSessionTracking:[DDRUMURLSessionTracking new]];
[DDRUM enableWith:configuration];
Para monitorizar las solicitudes enviadas desde la instancia URLSession
como recursos, activa URLSessionInstrumentation
para tu tipo de delegado y pasa la instancia de delegado a la instancia URLSession
:
URLSessionInstrumentation.enable(
with: .init(
delegateClass: <YourSessionDelegate>.self
)
)
let session = URLSession(
configuration: .default,
delegate: <YourSessionDelegate>(),
delegateQueue: nil
)
DDURLSessionInstrumentationConfiguration *config = [[DDURLSessionInstrumentationConfiguration alloc] initWithDelegateClass:[<YourSessionDelegate> class]];
[DDURLSessionInstrumentation enableWithConfiguration:config];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
delegate:[[<YourSessionDelegate> alloc] init]
delegateQueue:nil];
Muestrear sesiones de RUM
Para controlar los datos que tu aplicación envía a Datadog RUM, puedes especificar una frecuencia de muestreo para las sesiones de RUM mientras inicializas el SDK de RUM iOS como un porcentaje entre 0 y 100.
Por ejemplo, para conservar solo el 50% del uso de las sesiones:
let configuration = RUM.Configuration(
applicationID: "<rum application id>",
sessionSampleRate: 50
)
DDRUMConfiguration *configuration = [[DDRUMConfiguration alloc] initWithApplicationID:@"<rum application id>"];
configuration.sessionSampleRate = 50;
Instrumentar vistas
El SDK de Datadog iOS para RUM permite instrumentar vistas de aplicaciones SwiftUI
. La instrumentación también funciona con aplicaciones híbridas UIKit
y SwiftUI
.
Para instrumentar una SwiftUI.View
, añade el siguiente método a la declaración de tu vista:
import SwiftUI
import DatadogRUM
struct FooView: View {
var body: some View {
FooContent {
...
}
.trackRUMView(name: "Foo")
}
}
El método trackRUMView(name:)
inicia y detiene una vista de RUM cuando la vista SwiftUI
aparece y desaparece de la pantalla.
Instrumentar acciones de toque
El SDK de Datadog iOS para RUM permite instrumentar acciones de toque de aplicaciones SwiftUI
. La instrumentación también funciona con aplicaciones híbridas UIKit
y SwiftUI
.
Para instrumentar una acción de toque en una SwiftUI.View
, añade el siguiente método a tu declaración de vista:
import SwiftUI
import DatadogRUM
struct BarView: View {
var body: some View {
Button("BarButton") { {
...
}
.trackRUMTapAction(name: "Bar")
}
}
Rastrear eventos en segundo plano
Puedes realizar un rastreo de eventos, como fallos y solicitudes de red, cuando tu aplicación está en segundo plano (por ejemplo, no hay ninguna vista activa).
Añade el siguiente fragmento durante la inicialización en tu configuración de Datadog:
import DatadogRUM
RUM.enable(
with: RUM.Configuration(
...
trackBackgroundEvents: true
)
)
Rastreo de errores de iOS
iOS Crash Reporting and Error Tracking muestra cualquier problema en tu aplicación y los últimos errores disponibles. Puedes ver los detalles y atributos de los errores, incluido JSON, en el RUM Explorer.
Envío de datos cuando el dispositivo está desconectado
RUM garantiza la disponibilidad de los datos cuando el dispositivo del usuario está desconectado. En casos de zonas con baja conexión de red o cuando la carga de la batería del dispositivo es demasiado baja, todos los eventos de RUM se almacenan primero en el dispositivo local en lotes. Se envían tan pronto como la red esté disponible y la carga de la batería sea lo suficientemente alta como para garantizar que el SDK de RUM para iOS no afecte a la experiencia del usuario final. Si la red no está disponible mientras tu aplicación está en primer plano o si falla una carga de datos, el lote se conserva hasta que se lo pueda enviar con éxito.
Esto significa que incluso si los usuarios abren tu aplicación mientras están desconectados, no se pierde ningún dato.
Nota: Los datos en el disco se descartan automáticamente si se hacen demasiado viejos para garantizar que el SDK de RUM para iOS no utilice demasiado espacio del disco.
Versiones compatibles
Consulta Versiones compatibles para ver una lista versiones de sistemas operativos y plataformas que son compatibles con el SDK de RUM iOS.
Referencias adicionales
Más enlaces, artículos y documentación útiles: