Ir al contenido
RECDiagnosticSDK

Grábalo una vez. Reprodúcelo siempre.

Mira cada petición que hace tu app iOS.Reproduce cualquier bug.

Un depurador de red dentro de tu app: dos líneas en tu AppDelegate, sin proxy ni certificados que instalar. Tu SSL pinning sigue funcionando.

  1. 01

    Capturar

    Cada petición, en el momento en que tu app la hace.

  2. 02

    Inspeccionar

    Agrupadas por la pantalla que las envió.

  3. 03

    Compartir

    Un único archivo cifrado para tu equipo.

  4. 04

    Reproducir

    Mismas respuestas, mismo bug, en cualquier lugar.

El problema

«Solo pasa en su teléfono».

Bien en dev. Roto en UAT.

QA encuentra un bug en su teléfono. En el tuyo, todo funciona. Otra cuenta, otros datos u otro backend: el bug nunca aparece para ti. A menos que se haya grabado.

POST /v1/transfers · La misma petición, en tres sitios
EntornoEstadoResultado
Backend UAT · teléfono de QA422Bug
Backend dev · tu simulador200No reproducible
Replay · tu simulador422Reproducido

Replay

Su bug. Tu dispositivo. Mismas respuestas.

Las peticiones que coinciden reciben las respuestas grabadas. Todo lo demás va a la red, sin cambios.

  1. 01

    Tu QA encuentra el bug

    Todo ya está grabado, agrupado por pantalla.

    Sesión en directo2 peticiones
    TransferViewController10:32:08
    GET/v1/beneficiaries20097ms
    POST/v1/transfers422302ms
  2. 02

    Te envía la sesión

    Como JSON simple o cifrada con Safe export.

    • JSON simple

      Legible por quien lo reciba.

      Dx_4f2a9c1.json · 84 kB

      Se abre en cualquier sitio: un editor de texto, Session Studio, tus propias herramientas. Para consultarlo y reproducirlo en la app, impórtalo desde la pantalla History del SDK.

    • Safe export

      Cifrado con contraseña (AES-256-GCM).

      Dx_4f2a9c1_S.json · 84 kB

      Tras importarla, la sesión queda bloqueada: no se puede ver ni reproducir hasta introducir la contraseña para descifrarla.

  3. 03

    Tú la reproduces

    Mismas respuestas, mismo bug, en tu simulador o dispositivo de prueba.

    Replay activo3 peticiones
    TransferViewController10:32:08
    GET/v1/beneficiariesreplay20097ms
    GET/v1/limitsnetwork20088ms
    POST/v1/transfersreplay422302ms

    1 petición que no estaba grabada fue a la red

    Coincidencia: Strict (método, ruta, parámetros) o Ignore query (método, ruta).

Cómo funciona el replay

Una sesión. Todas las respuestas.

El contexto entre la petición y la respuesta.

No es una simple lista de URL: la pantalla que hizo cada petición, lo que pasó después y la sesión exacta que vivió tu usuario.

01 / LIVE

Cada petición, en tiempo real.

La lista en directo de las peticiones de tu app, agrupadas por la pantalla en curso cuando salieron. Busca y filtra por clase de estado y por método.

Todos2xx4xx5xx
GET/v1/accounts200124ms
GET/v1/me20086ms
GET/v1/notifications?unread=true200141ms
GET/v1/beneficiaries20097ms
Descubrir Live

02 / SCREEN MAP

El tráfico, en contexto.

Cada visita a un UIViewController que lanza peticiones se convierte en su propio capítulo. La cronología de navegación se conserva, incluso si una pantalla se visita dos veces.

  1. HomeViewController10:32:043
  2. TransferViewController10:32:082
  3. HomeViewController10:32:151
Descubrir Screen Map

03 / HISTORIAL DE SESIONES

Cada sesión, guardada.

Las sesiones se guardan automáticamente cuando la app pasa a segundo plano. Abre cualquier sesión anterior en la misma vista que Live.

  • Dx_4f2a9c1.jsonHoy, 10:32 · Este iPhone84 kB
  • Dx_9b13e07.jsonAyer, 18:05 · Este iPhone212 kB
  • IMP_qa-transfer-bug.jsonLun, 14:41 · Importada96 kB
Descubrir Historial de sesiones

05 / ENVÍO SEGURO

Comparte una sesión. Solo quien tenga la contraseña puede leerla.

Exporta una sesión como JSON simple, o cífrala con AES-256-GCM y una contraseña que eliges tú. Sin esa contraseña, el archivo no se puede abrir: ni en la app ni en Session Studio.

••••••••
Dx_4f2a9c1_S.jsonAES-256-GCM
Descubrir Envío seguro

Escuchamos. Nunca tocamos.

Tu petición nunca sale de tu sesión.

La mayoría de los depuradores capturan tu petición y la reenvían desde su propia sesión. Nosotros observamos la URLSession de tu app: los desafíos de autenticación, los certificados, las cookies y la política TLS siguen funcionando.

Leer cómo funciona

Interceptor típico

Tu appSesión del depuradorRed

Reenviada desde una segunda sesión: el pinning, los certificados y las cabeceras de sesión se quedan atrás.

DiagnosticSDK

Tu appTu sesión escuchandoRed

Misma petición, mismo delegado. Observada al pasar, nunca reenviada.

Una integración mínima

Dos líneas para empezar a escuchar.

Ver la instalación completa

Paso 1 · Añadir el paquete

En Xcode: File → Add Package Dependencies…

https://github.com/elarbi-allam/DiagnosticSDK.git
Paso 2 · AppDelegate.swift
import DiagnosticSDK @mainfinal class AppDelegate: UIResponder, UIApplicationDelegate {  private lazy var networkInterceptor = NetworkInterceptor()   func application(_ application: UIApplication,                   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {    #if DEBUG    networkInterceptor.start()    #endif    return true  }}

Listo cuando tú lo estés

Tu próximo informe de bug se reproducirá solo.

Empezar con SPM