iOS SDK - Netzwerk abfangen

Details zum Abfangen von Netzwerkanfragen mit dem iOS-Tracker

iOS SDK ⁠-⁠ Netzwerk abfangen

ORTracker stellt NetworkListener bereit, der sowohl Tasks als auch Requests akzeptiert. So gehen Sie vor:

import ORTracker

func fetchPokemonData(for name: String) {
    let networkListener = NetworkListener()
    let url = URL(string: "https://pokeapi.co/api/v2/pokemon/ditto")!
    var request = URLRequest(url: url)
    request.httpMethod = "GET" // This is the default, so it's optional in this case.

    // Start the network listener with the request
    networkListener.start(request: request)

    // Create a data task
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        if let error = error {
            print("Error: \(error.localizedDescription)")
            return
        }
        
        if let data = data {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
								print(json)
            } catch {
                print("Error deserializing JSON: \(error)")
            }
        }
        
        networkListener.finish(response: response, data: data)
    }

    task.resume()

	}

Es werden zwei Schlüssel bereitgestellt, um die Anfrage- und Antwortdaten automatisch zu kürzen: ignoredKeys für den Body und ignoredHeaders für die Header. Sowohl Anfrage als auch Antwort werden bereinigt, der Body jedoch nur, wenn es sich um gültiges JSON handelt.

Weisen Sie einfach eine Liste von Strings zu, die Sie bereinigen möchten:

let networkListener = NetworkListener()
networkListener.ignoredHeaders = ["mySecretToken"]
networkListener.ignoredKeys = ["password"]

Sie können die Antwortdaten auch ändern, bevor Sie sie an den Listener übergeben:

// ... request

var sanitizedData
if let data = data {
	do {
		let json = try JSONSerialization.jsonObject(with: data, options: [])
		sanitizedData = customSanitizeFunction(data)
		print(json)
	} catch {
		print("Error deserializing JSON: \(error)")
	}
}

networkListener.finish(response: response, data: sanitizedData)

Wenn Sie Fragen zu diesem Vorgang haben, melden Sie sich gerne bei uns auf Slack.