Información general

En esta página, se describe cómo instrumentar tus aplicaciones tanto para Real User Monitoring (RUM) como para Error Tracking con el SDK de iOS. Puedes seguir los pasos que se indican a continuación para instrumentar tus aplicaciones para RUM (que incluye Error Tracking) o Error Tracking si lo has adquirido como producto independiente.

Configuración

  1. Declarar el SDK como dependencia.
  2. Especificar los detalles de la aplicación en la interfaz de usuario
  3. Inicializar la biblioteca.
  4. Inicializa el monitor de Datadog y habilita URLSessionInstrumentation para empezar a enviar datos.

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 una integración utilizando 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:

DatadogCore
DatadogRUM

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

  1. Ve a Digital Experience > Add an Application (Experiencia digital > Añadir una aplicación).

  2. 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.

  3. Para instrumentar tus vistas web, haz clic en el conmutador Instrument your webviews (Instrumentar tus vistas web). Para obtener más información, consulta Seguimiento de vistas web.

  4. Para desactivar la recopilación automática de datos de usuario para el IP de cliente o datos de geolocalización, utiliza los conmutadores para esos ajustes. Para obtener más información, consulta Recopilación de datos de RUM iOS.

    Crear una aplicación RUM para iOS en Datadog
  1. Ve a Error Tracking > Settings > Browser and Mobile > Add an Application (Error Tracking > Configuración > Navegador y móvil > Añadir una aplicación).

  2. 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.

  3. Para instrumentar tus vistas web, haz clic en el conmutador Instrument your webviews (Instrumentar tus vistas web). Para obtener más información, consulta Seguimiento de vistas web.

  4. Para desactivar la recopilación automática de datos de usuario para el IP de cliente o datos de geolocalización, utiliza los conmutadores para esos ajustes. Para obtener más información, consulta Recopilación de datos de iOS.

    Crear una aplicación para iOS en Datadog

Para asegurar la seguridad de tus datos, debes utilizar un token de cliente. Si solo utilizas claves de API de Datadog para configurar la biblioteca dd-sdk-ios, están expuestos del lado del cliente en el código de byte de la aplicación de iOS.

Para obtener más información sobre cómo configurar un token de cliente, consulta la documentación sobre el token 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.

Muestreo de sesiones de RUM

La configuración de la frecuencia de muestreo de la sesión no se aplica a Error Tracking.

Para controlar los datos que tu aplicación envía a Datadog RUM, puedes especificar una tasa de muestreo para las sesiones de RUM mientras inicializas el SDK de iOS de RUM. La tasa es un porcentaje entre 0 y 100. Por defecto, sessionSamplingRate se establece en 100 (mantener todas las sesiones).

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;

Configurar el consentimiento de rastreo (cumplimiento de GDPR)

Para cumplir con la normativa GDPR, el SDK requiere el valor de consentimiento de rastreo durante la inicialización.

El ajuste trackingConsent puede ser uno de los siguientes valores:

  1. .pending: el SDK de RUM iOS comienza a recopilar y procesar los datos, pero no los envía a Datadog. El SDK de RUM iOS espera el nuevo valor de consentimiento del rastreo para decidir qué hacer con los datos procesados.
  2. .granted: el SDK de RUM iOS comienza a recopilar los datos y los envía a Datadog.
  3. .notGranted: el SDK de iOS de RUM no recopila ningún dato. Ni logs, ni trazas, ni eventos se envían a Datadog.

Para cambiar el valor de consentimiento de rastreo después de inicializar el SDK de RUM iOS, utiliza la llamada a la API Datadog.set(trackingConsent:). El SDK de RUM iOS cambia su comportamiento de acuerdo con el nuevo valor.

Por ejemplo, si el consentimiento de rastreo actual es .pending:

  • Si cambia el valor a .granted, el SDK de RUM iOS envía todos los datos actuales y futuros a Datadog;
  • Si cambias el valor a .notGranted, el SDK de RUM iOS borra todos los datos actuales y no recopila datos futuros.

Inicializa el monitor de Datadog y activa URLSessionInstrumentation

Configura y registra el monitor de Datadog. Sólo 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];

Instrumentar vistas

El SDK para iOS Datadog permite obtener vistas de instrumentación de las aplicaciones SwiftUI. La instrumentación también funciona con aplicaciones UIKit y SwiftUI híbridas.

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 cuando la vista SwiftUI aparece y desaparece de la pantalla.

Instrumentar acciones de toque

El SDK para iOS Datadog permite instrumentar acciones de toque de las aplicaciones SwiftUI. La instrumentación también funciona con aplicaciones UIKit y SwiftUI híbridas.

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

El rastreo de eventos en segundo plano puede dar lugar a sesiones adicionales, lo que puede afectar a la facturación. Si tienes dudas, contacta con el equipo de soporte de Datadog.

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

Crash Reporting and Error Tracking de iOS 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

El SDK de iOS 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 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 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: Para garantizar que el SDK de iOS no utilice demasiado espacio en disco, los datos del disco se descartan automáticamente si se vuelven demasiado antiguos.

Versiones compatibles

Consulta Versiones compatibles para ver una lista de versiones de sistemas operativos y plataformas que son compatibles con el SDK de iOS.

Para leer más