Zum Inhalt springen
RECDiagnosticSDK

Einmal aufzeichnen. Beliebig oft abspielen.

Sehen Sie jeden Request Ihrer iOS-App.Spielen Sie jeden Bug erneut ab.

Ein Netzwerk-Debugger direkt in Ihrer App: zwei Zeilen im AppDelegate, kein Proxy, kein Zertifikat. Ihr SSL-Pinning funktioniert weiter.

  1. 01

    Erfassen

    Jeder Request, sobald Ihre App ihn sendet.

  2. 02

    Untersuchen

    Gruppiert nach dem Screen, der ihn gesendet hat.

  3. 03

    Teilen

    Eine verschlüsselte Datei für Ihr Team.

  4. 04

    Abspielen

    Gleiche Antworten, gleicher Bug, überall.

Das Problem

„Das passiert nur auf ihrem Handy.“

In Dev okay. In UAT kaputt.

Die QA findet einen Bug auf ihrem Handy. Auf Ihrem funktioniert alles. Anderes Konto, andere Daten oder ein anderes Backend: Bei Ihnen zeigt sich der Bug nie. Es sei denn, er wurde aufgezeichnet.

POST /v1/transfers · Derselbe Request, drei Orte
UmgebungStatusErgebnis
UAT-Backend · Handy der QA422Bug
Dev-Backend · Ihr Simulator200Nicht reproduzierbar
Replay · Ihr Simulator422Reproduziert

Replay

Der Bug der QA. Ihr Gerät. Gleiche Antworten.

Passende Requests erhalten die aufgezeichneten Antworten. Alles andere geht unverändert ins Netzwerk.

  1. 01

    Ihre QA stößt auf den Bug

    Alles ist bereits aufgezeichnet, nach Screens gruppiert.

    Live-Session2 Requests
    TransferViewController10:32:08
    GET/v1/beneficiaries20097ms
    POST/v1/transfers422302ms
  2. 02

    Sie schickt Ihnen die Session

    Als einfaches JSON oder verschlüsselt per Safe export.

    • Einfaches JSON

      Für jeden lesbar, der es erhält.

      Dx_4f2a9c1.json · 84 kB

      Lässt sich überall öffnen: im Texteditor, in Session Studio, in Ihren eigenen Tools. Um sie in der App anzusehen und abzuspielen, importieren Sie sie im History-Screen des SDK.

    • Safe export

      Mit Passwort verschlüsselt (AES-256-GCM).

      Dx_4f2a9c1_S.json · 84 kB

      Nach dem Import bleibt die Session gesperrt: Ansehen und Replay sind erst möglich, wenn das Passwort zum Entschlüsseln eingegeben wurde.

  3. 03

    Sie spielen sie ab

    Gleiche Antworten, gleicher Bug, im Simulator oder auf Ihrem Testgerät.

    Replay aktiv3 Requests
    TransferViewController10:32:08
    GET/v1/beneficiariesreplay20097ms
    GET/v1/limitsnetwork20088ms
    POST/v1/transfersreplay422302ms

    1 nicht aufgezeichneter Request ging ins Netzwerk

    Abgleich: Strict (Methode, Pfad, Query) oder Ignore query (Methode, Pfad).

So funktioniert Replay

Eine Session. Alle Antworten.

Der Kontext zwischen Request und Response.

Keine flache URL-Liste: der Screen, der jeden Request ausgelöst hat, was danach passierte, und genau die Session, die Ihr Nutzer erlebt hat.

01 / LIVE

Jeder Request, in Echtzeit.

Eine Live-Liste der Requests Ihrer App, gruppiert nach dem Screen, der beim Start angezeigt wurde. Suche und Filter nach Statusklasse und Methode.

Alle2xx4xx5xx
GET/v1/accounts200124ms
GET/v1/me20086ms
GET/v1/notifications?unread=true200141ms
GET/v1/beneficiaries20097ms
Live entdecken

02 / SCREEN MAP

Traffic im Kontext.

Jeder Besuch eines UIViewControllers, der Requests startet, wird zu einem eigenen Kapitel. Die Navigationschronologie bleibt erhalten, auch wenn ein Screen zweimal besucht wird.

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

03 / SESSION-VERLAUF

Jede Session, gespeichert.

Sessions werden automatisch gespeichert, sobald die App in den Hintergrund wechselt. Öffnen Sie jede frühere Session in derselben Ansicht wie Live.

  • Dx_4f2a9c1.jsonHeute, 10:32 · Dieses iPhone84 kB
  • Dx_9b13e07.jsonGestern, 18:05 · Dieses iPhone212 kB
  • IMP_qa-transfer-bug.jsonMo, 14:41 · Importiert96 kB
Session-Verlauf entdecken

05 / SICHER TEILEN

Teilen Sie eine Session. Nur wer das Passwort hat, kann sie lesen.

Exportieren Sie eine Session als einfaches JSON oder verschlüsseln Sie sie mit AES-256-GCM und einem Passwort Ihrer Wahl. Ohne dieses Passwort lässt sich die Datei nicht öffnen: weder in der App noch in Session Studio.

••••••••
Dx_4f2a9c1_S.jsonAES-256-GCM
Sicher teilen entdecken

Wir hören zu. Wir greifen nie ein.

Ihr Request verlässt nie Ihre Session.

Die meisten Debugger fangen Ihren Request ab und senden ihn aus ihrer eigenen Session erneut. Wir beobachten stattdessen die URLSession Ihrer App, sodass Authentifizierungs-Challenges, Zertifikate, Cookies und TLS-Richtlinien weiter funktionieren.

Funktionsweise lesen

Typischer Interceptor

Ihre AppSession des DebuggersNetzwerk

Aus einer zweiten Session erneut gesendet: Pinning, Zertifikate und Session-Header bleiben auf der Strecke.

DiagnosticSDK

Ihre AppIhre Session hört zuNetzwerk

Gleicher Request, gleicher Delegate. Unterwegs beobachtet, nie erneut gesendet.

Eine winzige Integration

Zwei Zeilen, um mitzuhören.

Vollständige Einrichtung ansehen

Schritt 1 · Package hinzufügen

In Xcode: File → Add Package Dependencies…

https://github.com/elarbi-allam/DiagnosticSDK.git
Schritt 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  }}

Bereit, wenn Sie es sind

Ihr nächster Bugreport spielt sich selbst ab.

Mit SPM loslegen