Privacidad y enmascaramiento
Elija la estrategia de enmascaramiento que mejor se adapte a sus necesidades de privacidad.
Estrategias de enmascaramiento
Mobile Session Replay ofrece dos estrategias de enmascaramiento para equilibrar la protección de la privacidad con la utilidad de reproducción. Su elección determina cómo se manejan los datos confidenciales en las grabaciones de sesión.
Estrategia de enmascaramiento predeterminada
La estrategia de enmascaramiento predeterminada proporciona la máxima protección de la privacidad al enmascarar todo el texto y las imágenes sin excepción. Elige esta estrategia cuando:
- Tu aplicación maneja datos altamente sensibles (sanidad, servicios financieros, etc.).
- El cumplimiento normativo exige una estricta protección de datos.
- Quieres correr cero riesgo de capturar información privada.
Lo que se oculta:
- Todo el texto se reemplaza con asteriscos (por ejemplo, "hola" se convierte en "*****").
- Todas las imágenes se reemplazan con bloques de marcador de posición de las mismas dimensiones.
- Los toques y deslizamientos del usuario se siguen registrando (a menos que los ocultes).
Esto garantiza que, incluso si agrega accidentalmente código de desenmascaramiento, la estrategia predeterminada siempre enmascarará todo.
Limitaciones importantes de la estrategia de enmascaramiento predeterminada:
- Los modos de enmascaramiento no son configurables.
- Las anulaciones de enmascaramiento en línea (como la etiqueta
nr-unmask) se ignoran - Las reglas de enmascaramiento del lado del servidor no tienen efecto.

Diferencia entre enmascaramiento y bloqueo
Es importante distinguir entre Enmascaramiento y Bloqueo, ya que manejan los datos sensibles de manera diferente en la reproducción:
Enmascaramiento: reemplaza contenido específico mientras conserva el diseño. El texto se convierte en asteriscos (*) y las imágenes se convierten en bloques de marcadores de posición.
Bloqueo: Crea una superposición negra sólida y completa que cubre toda el área de visualización.
Cuando una vista está bloqueada:
Toda el área de visualización está oscurecida en la repetición de la sesión.
Todo el contenido dentro de esa vista está completamente oculto.
Efecto en cascada: Todas las subvistas se bloquean automáticamente.
Las interacciones del usuario en esa área no se capturan y los elementos visuales permanecen ocultos.
Estrategia de enmascaramiento personalizada
La estrategia de enmascaramiento personalizada le brinda un control preciso sobre qué se enmascara y qué permanece visible. Emplee esta estrategia cuando:
- Tu aplicación tiene una mezcla de contenido público y contenido sensible.
- Necesitas ver elementos específicos UI para diagnosticar problemas de forma eficaz.
- Desea desenmascarar selectivamente áreas no sensibles
Una estrategia personalizada consiste en:
- Modos de enmascaramiento: línea de reglas base para diferentes tipos de contenido (texto, imágenes, interacción)
- Reglas de anulación: Excepciones para enmascarar o desenmascarar componentes específicos
Para cambiar a enmascaramiento personalizado:
En la interfaz sitio web de New Relic:
- Vaya a Mobile > [su entidad] > Settings > Application > Session Replay
- En la sección Masking strategy, seleccione Custom
- Configure sus modos de enmascaramiento (consulte la siguiente sección).
- Opcionalmente, agregue reglas de anulación para componentes específicos.

Modos de enmascaramiento
Al emplear la estrategia de enmascaramiento personalizada, los modos de enmascaramiento establecen el comportamiento de privacidad base para su Session Replay. Estos modos se aplican globalmente a toda la aplicación a menos que se anulen mediante reglas específicas para componentes individuales.
Para configurar los modos de enmascaramiento:
En la interfaz sitio web de New Relic:
- Vaya a Mobile > [su entidad] > Settings > Application > Session Replay
- Cerciorar de seleccionar la estrategia de enmascaramiento Custom.
- En la sección Masking modes, active o desactive cada modo según sus necesidades.
- Los cambios entrarán en vigor inmediatamente para todas las nuevas grabaciones de sesiones.

Los cuatro modos de enmascaramiento controlan diferentes tipos de contenido:
enmascarar usuario input text
Controla si el texto introducido por el usuario en los campos de entrada es visible en las repeticiones.
Cuando esté habilitado (recomendado):
- Todos los caracteres introducidos por el usuario se reemplazan con asteriscos.
- Ejemplo: el usuario escribe "john.doe@email.com" → aparece como "******************" en el replay
- Protege nombres de usuario, direcciones de email, consultas de búsqueda, datos de formularios y otro contenido introducido por el usuario.
Cuando está desactivado:
- El texto introducido por el usuario aparece exactamente como se escribió en la repetición.
- Emplee únicamente cuando los campos de entrada contengan información no confidencial.
- Útil para depurar problemas de validación de formularios o la funcionalidad de búsqueda.
Importante
Los campos de contraseña siempre están ocultos, independientemente de esta configuración. Los campos SecureField (iOS), los tipos de entrada de contraseña (Android) y los campos de entrada de texto seguro nunca mostrarán texto sin formato en las repeticiones.
Configuración predeterminada: Habilitada en la estrategia de enmascaramiento personalizada.
Cuándo podrías desactivar este modo:
- Barras de búsqueda públicas donde las consultas no son personalmente identificables
- Filtros no sensibles o selecciones de categoría
- Solución de problemas de autocompletado o validación de entrada
enmascarar aplicación texto
Controla si el texto mostrado por tu aplicación (etiquetas, botones, encabezados, contenido) es visible en las repeticiones.
Cuando está habilitado:
- Todo el texto estático y dinámico que genera tu aplicación se reemplaza con asteriscos.
- Ejemplo: La etiqueta "Nombre:" se convierte en "***********" en la repetición.
- Protege cualquier texto que pueda contener o revelar información confidencial.
Cuando está desactivado:
- Todo el texto de la aplicación aparece exactamente como lo ve el usuario.
- Las etiquetas, los botones, los encabezados y el contenido son totalmente legibles.
- Hace que las repeticiones sean mucho más fáciles de entender y navegar.
- Esencial para identificar con qué pantallas o características interactuó el usuario.
Configuración predeterminada: Habilitada en la estrategia de enmascaramiento personalizada.
Recomendación para la mayoría de las aplicaciones: Desactive este modo a menos que muestre información altamente sensible. El texto visible UI es crucial para:
- Comprender las rutas de navegación del usuario
- Identificar qué botones o características pulsó el usuario
- Al ver el mensaje de error que apareció
- Diagnóstico de problemas de maquetación o localización
- Correlacionar las repeticiones con características específicas de la aplicación
Mantén este modo activado cuando:
- Aplicaciones de atención médica que muestran información del paciente
- Aplicaciones financieras que muestran detalles de cuentas o transacciones
- Aplicaciones con contenido generado por el usuario que podría ser sensible
- Los requisitos de cumplimiento exigen que se oculte todo el texto mostrado.
Sugerencia
Si desactiva este modo pero necesita ocultar elementos de texto confidenciales específicos, emplee reglas de anulación para ocultar selectivamente solo esos componentes mientras mantiene visible el resto de la UI de usuario.
imágenes de máscara
Importante
Versiones mínimas del agente que admiten la captura de imágenes:
- Agente iOS v7.5.10 (lanzado el 15 de septiembre de 2025)
- Agente Android v7.6.9 (lanzado el 15 de septiembre de 2025)
- Agente React Native v1.5.10 (lanzado el 15 de septiembre de 2025)
Controla si las imágenes de tu aplicación se capturan y se muestran en las repeticiones.
Cuando esté habilitado (recomendado):
- Todas las imágenes se reemplazan con bloques de marcador de posición del mismo tamaño.
- marcador de posición conserva la estructura del diseño para que puedas ver las posiciones de las imágenes
- No se transmiten datos de imagen a New Relic.
- Protege las fotos subidas por el usuario, las fotos de perfil y las imágenes potencialmente sensibles.
Cuando está desactivado:
- Las imágenes se capturan, comprimen, codifican en base64 y se incluyen en la carga útil de reproducción.
- Las imágenes aparecen en las repeticiones, aunque con una calidad inferior a la que vio el usuario.
- Aumenta significativamente los costos de transmisión y almacenamiento de datos
- Ayuda a diagnosticar problemas con la carga, el renderizado o el diseño de imágenes.
Consideraciones importantes al capturar imágenes
Habilitar la captura de imágenes influye significativamente en el uso de datos y el rendimiento:
Uso de datos: Las imágenes aumentan considerablemente el tamaño de la carga útil de reproducción, consumiendo muchos más datos de usuario y su cuota de almacenamiento de New Relic.
Calidad: Las imágenes se comprimen agresivamente en el lado del cliente para minimizar el impacto, lo que resulta en una calidad inferior a la original.
rendimiento: la captura y compresión de imágenes pueden afectar el rendimiento de la aplicación en dispositivos más antiguos
Privacidad: Considere si las imágenes podrían contener información sensible o privada.
Desactive el enmascaramiento de imágenes solo cuando la depuración visual sea esencial para su caso de uso.
Configuración predeterminada: Habilitada en la estrategia de enmascaramiento personalizada.
Cuándo podrías desactivar este modo:
- Diagnóstico de fallos en la carga de imágenes o problemas de renderizado
- Investigación de problemas de diseño relacionados con las dimensiones de la imagen
- Comprender la interacción del usuario con galerías de imágenes o contenido multimedia.
- Tu aplicación solo muestra imágenes públicas y no sensibles (iconos, logotipos, ilustraciones).
Mantén este modo activado cuando:
- Fotos de perfil de usuario o fotos subidas
- Documentos o captura de pantalla capturados dentro de la aplicación
- imágenes médicas o imágenes relacionadas con la atención médica
- Cualquier contenido visual generado por el usuario
Ocultar toques y deslizamientos del usuario
Controla si las interacciones táctiles del usuario se visualizan en las repeticiones.
Cuando está desactivado (recomendado):
- Los toques del usuario aparecen como círculos verdes en la repetición
- Los gestos de deslizamiento aparecen como líneas verdes que muestran la trayectoria de movimiento.
- Esencial para comprender con qué elementos UI interactuó el usuario.
- Ayuda a identificar problemas de usabilidad, toques perdidos o interacciones confusas.
Cuando está habilitado:
- En la repetición no aparecen visualizaciones de toques ni deslizamientos.
- El usuario parece navegar por su aplicación sin ninguna interacción visible.
- Emplear cuando los patrones táctiles puedan revelar información confidencial.
Sugerencia
El teclado del sistema operativo y las pulsaciones y deslizamientos sobre él nunca se capturan en las repeticiones, independientemente de esta configuración. Esto proporciona protección automática para la introducción de contraseñas y textos confidenciales.
Configuración predeterminada: Deshabilitada en la estrategia de enmascaramiento personalizada (los toques y deslizamientos son visibles).
Cuándo ocultar la interacción: Enmascarar el texto suele ser suficiente, pero ocultar los toques/deslizamientos puede ser necesario cuando:
- Tu aplicación tiene un teclado numérico o PIN integrado donde los patrones de pulsación revelan códigos de seguridad
- Los patrones de deslizamiento se emplean para la autenticación (bloqueos por patrón, contraseñas por gestos).
- La interacción táctil en pantallas específicas podría implicar decisiones delicadas (selección de síntomas médicos, decisiones financieras).
Recomendación para la mayoría de las aplicaciones: Mantener la interacción visible para:
- Vea exactamente dónde tocó el usuario, incluidas las áreas omitidas o que no responden.
- Comprende los patrones de navegación y el flujo de usuarios a través de tu aplicación.
- Identificar problemas de usabilidad con botones táctiles pequeños o poco claros
- Diagnosticar características basadas en gestos (deslizar para eliminar, tirar para actualizar, etc.)
Configuración de enmascaramiento avanzada
Emplee anulaciones de enmascaramiento cuando desee que partes específicas de su aplicación tengan configuraciones de enmascaramiento diferentes a los modos de enmascaramiento especificados. Por ejemplo, si la mayor parte de su aplicación no contiene datos confidenciales, puede configurar sus modos para que se desenmascaren y especificar anulaciones para enmascarar únicamente las partes de su aplicación que contienen datos confidenciales.
Métodos de anulación de enmascaramiento
Ofrecemos tres formas de crear reglas de anulación de enmascaramiento:
atributo en línea
Las anulaciones de enmascaramiento en línea se aplican en su código etiquetando el componente que desea enmascarar o desenmascarar. Deberás desplegar una nueva versión de tu aplicación y hacer que el usuario la adopte para que se apliquen las actualizaciones, por lo que se emplean mejor cuando deseas que la supervisión de tu proceso de control de cambios gestione los cambios de enmascaramiento.
SwiftUI
Emplee NRConditionalMaskView para envolver contenido que deba tener un comportamiento de enmascaramiento específico. Este componente SwiftUI proporciona un control preciso sobre el enmascaramiento de datos en Session Replay.
Requisitos:
iOS 16.0+
Swift 5.0+
Importar:
import SwiftUIimport NewRelicUso básico:
// Mask all text content within this viewNRConditionalMaskView(maskApplicationText: true) {VStack {Text("This text will be masked in session replay")Text("This text will also be masked")}}Desvelar el contenido:
// Explicitly unmask content (useful when parent views have masking enabled)NRConditionalMaskView(maskApplicationText: false) {Text("This text will be visible in session replay")}Enmascaramiento basado en identificadores:
// Use an identifier to control masking via API or dashboard settingsNRConditionalMaskView(sessionReplayIdentifier: "unmasked-section") {Text("This text masking is controlled by the identifier")}Use
NRConditionalMaskViewpara envolver el contenido. Puede usar el parámetroblockViewpara ocultar completamente una jerarquía de vistas.SwiftUI
// Block all content within this view (renders as a black rectangle)NRConditionalMaskView(blockView: true) {YourSensitiveView()}Solución de problemas de texto faltante en SwiftUI
Si alguna vez hay un caso en el que falte texto en la repetición, envuelva toda la región de la pantalla en un
NRConditionalMaskViewsin parámetros para solucionar el problema:NRConditionalMaskView {// Your entire screen region content hereYourScreenView()}UIKit
Puedes bloquear vistas usando la propiedad
blockViewdirectamente o usando un identificador de accesibilidad específico.Usando la propiedad:
let sensitiveView = UIView()sensitiveView.blockView = trueUso del identificador de accesibilidad: Agregar
nr-blockal identificador activará el comportamiento de bloqueo.let sensitiveView = UIView()sensitiveView.accessibilityIdentifier = "nr-block"Parámetro:
maskApplicationText: Cuandotrue, enmascarar todo el contenido de texto dentro de la vista. Cuandofalse, garantiza que el texto sea visible. Cuandonil, hereda del padre.maskUserInputText: Cuandotrue, enmascarar usuarios input fields within the view. Cuandofalse, muestra el contenido de entrada. Cuandonil, hereda del padre.maskAllImages: Cuandotrue, enmascarar todas las imágenes dentro de la vista. Cuandofalse, muestra imágenes. Cuandonil, hereda del padre.maskAllUserTouches: Cuandotrue, enmascarar la interacción del usuario dentro de la vista. Cuandofalse, muestra el evento táctil. Cuandonil, hereda del padre.sessionReplayIdentifier: Identificador opcional para controlar el enmascaramiento a través deaddSessionReplayMaskedAccessibilityIdentifier,addSessionReplayUnmaskedAccessibilityIdentifiero a través del dashboard de la aplicación New Relic.blockView: Cuandotrue, toda el área de visualización se oculta en la reproducción de la sesión. Cuandofalse, no hay comportamiento de bloqueo.activated: Cuandofalse, deshabilita por completo la funcionalidad de enmascaramiento para esta vista. El valor predeterminado estrue.Ejemplo avanzado: enmascaramiento mixto en un formulario:
struct RegistrationForm: View {@State private var firstName = ""@State private var email = ""@State private var password = ""var body: some View {VStack(alignment: .leading, spacing: 16) {// Public form labels remain visibleNRConditionalMaskView(maskApplicationText: false) {Text("Create Your Account").font(.title)}// Personal informationNRConditionalMaskView(sessionReplayIdentifier: "personal-info") {TextField("First Name", text: $firstName)TextField("Email", text: $email)}// Highly sensitive - mask everythingNRConditionalMaskView(sessionReplayIdentifier: "password-section") {SecureField("Password", text: $password)Text("Password must be at least 8 characters")}Button("Sign Up") {// Handle registration}}.padding()}}UIKit
Agregue o añada
nr-maskonr-unmaskalaccessibilityIdentifierdelUIViewque se va a enmascarar o desenmascarar. Agregar un identificador existente es útil si necesita mantener un identificador único para pruebas automatizadas, pero probablemente tendrá que actualizar sus pruebas luego de cambiar los valores.Ejemplo de cómo agregar un
accessibilityIdentifier:let myView = UIView()myView.accessibilityIdentifier = "nr-mask"Ejemplo de cómo agregar a un
accessibilityIdentifierexistente:let myView = UIView()myView.accessibilityIdentifier = "someExistingId.nr-unmask"
Jetpack Compose
Usa las extensiones de Modifier para controlar el comportamiento de enmascaramiento y bloqueo en Jetpack Compose.
Ejemplo:
// Mask a composableText( text = "Sensitive information", modifier = Modifier.newRelicMask())
// Unmask a composableText( text = "Public information", modifier = Modifier.newRelicUnmask())
// Block a composableText( text = "Sensitive User information", modifier = Modifier.newRelicBlock())diseños XML
Agregue una etiqueta nr-mask,nr-unmask o nr-block a las vistas o componentes que se van a enmascarar, desenmascarar o bloquear.
Ejemplo:
<EditText android:id="@+id/editTextEmail" android:layout_width="390dp" android:inputType="text" android:tag="nr-mask" android:importantForAutofill="no" />
<EditText android:id="@+id/editTextEmail" android:layout_width="390dp" android:inputType="text" android:tag="nr-unmask" android:importantForAutofill="no" />
<CustomPinView android:id="@+id/editTextEmail" android:layout_width="390dp" android:inputType="text" android:tag="nr-block" android:importantForAutofill="no" />Emplee los componentes <NewRelicMask> y <NewRelicUnMask> para enmascarar o desenmascarar vistas o componentes.
Ejemplo:
<View> <NewRelicMask> <Text>Sensitive information</Text> </NewRelicMask></View>
<View> <NewRelicUnmask> <Text>Non-sensitive information</Text> </NewRelicUnmask></View>Métodos de la API local
Las anulaciones de enmascaramiento de métodos de la API local también se aplican en su código dentro de la configuración del agente de New Relic. Son útiles cuando las vistas objetivo ya tienen un identificador único y se desea gestionarlas en una lista centralizada en lugar de etiquetar cada vista individualmente a lo largo del código.
SwiftUI
Para las vistas de SwiftUI, emplee el parámetro sessionReplayIdentifier en NRConditionalMaskView junto con estos métodos:
addSessionReplayMaskedAccessibilityIdentifieraddSessionReplayUnmaskedAccessibilityIdentifierEjemplo:
// In your app initializationNewRelic.addSessionReplayMaskedAccessibilityIdentifier("sensitive-section")NewRelic.addSessionReplayUnmaskedAccessibilityIdentifier("public-section")// In your SwiftUI viewsNRConditionalMaskView(sessionReplayIdentifier: "sensitive-section") {Text("This will be masked")}NRConditionalMaskView(sessionReplayIdentifier: "public-section") {Text("This will be visible")}UIKit
ocultar o desenmascarar vistas agregando su
classoaccessibilityIdentifiera los siguientes métodos:addSessionReplayMaskViewClassaddSessionReplayUnmaskViewClassaddSessionReplayMaskViewAccessibilityIdentifieraddSessionReplayUnmaskViewAccessibilityIdentifierEjemplo:
NewRelic.addSessionReplayMaskViewClass("SecureLabel")NewRelic.addSessionReplayUnmaskViewClass("UnsecureLabel")NewRelic.addSessionReplayMaskViewAccessibilityIdentifier("login")NewRelic.addSessionReplayUnmaskViewAccessibilityIdentifier("editTextEmail")
Jetpack Compose
Usa las extensiones de Modifier para controlar el comportamiento de enmascaramiento y bloqueo en Jetpack Compose.
Ejemplo:
// Mask a composableText( text = "Sensitive information", modifier = Modifier.newRelicMask())
// Unmask a composableText( text = "Public information", modifier = Modifier.newRelicUnmask())
// Block a composableText( text = "Sensitive User information", modifier = Modifier.newRelicBlock())diseños XML
ocultar o desenmascarar vistas agregando su class o android:tag a los siguientes métodos:
addSessionReplayMaskViewClassaddSessionReplayUnmaskViewClassaddSessionReplayMaskViewTagaddSessionReplayUnmaskViewTag
Ejemplo:
NewRelic.addSessionReplayMaskViewTag("login");NewRelic.addSessionReplayUnmaskViewTag("editTextEmail");NewRelic.addSessionReplayUnmaskViewClass("android.widget.Button");NewRelic.addSessionReplayMaskViewClass("android.widget.TextView");NewRelic.addSessionReplayMaskViewClass("com.yourpackagename.CustomView");Reglas del servidor
Importante
Versiones mínimas de agente que admiten reglas del lado del servidor:
- Agente iOS v7.5.10 (lanzado el 15 de septiembre de 2025)
- Agente Android v7.6.9 (lanzado el 15 de septiembre de 2025)
- Agente React Native v1.5.10 (lanzado el 15 de septiembre de 2025)
Las reglas de enmascaramiento del lado del servidor permiten corregir retroactivamente errores de enmascaramiento en versiones de la aplicación que ya se publicaron. Entran en vigor inmediatamente en todos los nuevos inicios de sesión sin necesidad de actualizar la aplicación.
Las reglas constan de tres componentes:
- Tipo: Determina si los componentes coincidentes deben estar enmascarados o no enmascarados.
- identificador: Especifica cómo desea que se identifique el elemento de destino (por ejemplo, por clase, etiqueta, etc.).
- Valor: El valor del identificador seleccionado al que se aplicará la regla.
Por ejemplo, una regla para Mask class android.widget.EditText enmascararía todos los campos de texto editables por el usuario en una aplicación de Android.

Define las anulaciones de enmascaramiento para Session Replay celular en la configuración de la aplicación.
Para crear una nueva regla:
En la interfaz sitio web de New Relic:
- Ve a Mobile > [tu entidad] > Settings > Application > Session Replay.
- Desplazar hasta Override rules y haga clic en Add new override rule.
- Seleccione el tipo de regla (enmascarar o desenmascarar).
- Elige el identificador que quieras usar para los componentes objetivo.
- Ingrese el valor del identificador al que desea que se aplique la regla.
- Haz clic en Add rule.
La nueva regla se agrega a la tabla de Reglas de Anulación y se aplicará en todas las sesiones nuevas.
Para eliminar o editar una regla:
En la interfaz sitio web de New Relic:
- Navega a Mobile > [tu entidad] > Settings > Application > Session Replay.
- Localice la regla que desea modificar en la tabla de Reglas de anulación.
- Haz clic en el menú
...y luego selecciona Delete o Edit.
Prioridad de la regla de enmascaramiento
Cuando varias reglas de enmascaramiento se aplican a una vista o elemento, el siguiente orden de prioridad determina qué regla se aplica:
La estrategia lo supera todo
Si su estrategia de enmascaramiento es
Default, los modos y las anulaciones no se aplican.Ejemplo: Si agregó anulaciones de atributos
nr-unmasken línea en su código, pero la estrategia de enmascaramientoDefaultestá seleccionada en la configuración, todo seguirá enmascarado.Las anulaciones reemplazan los modos
Los modos determinan el comportamiento estándar cuando no hay una anulación, por lo que si hay una anulación, siempre tendrá prioridad sobre el modo.
Ejemplo: Si el modo
Mask application textestá habilitado y agrega una anulación de atributonr-unmasken línea a una vista en su código, esa vista se desenmascarará, pero todas las demás vistas se enmascararán.Las anulaciones de enmascaramiento prevalecen sobre las anulaciones de desenmascaramiento.
Si una misma vista tiene anulaciones tanto de enmascaramiento como de desenmascaramiento, siempre estará enmascarada.
Ejemplo: Si una vista tiene una anulación de atributo
nr-unmasken línea y una regla del lado del servidornr-mask, la vista se enmascarará.
Siguiente: Ver session replays en New Relic