React Native SDK - Netzwerk abfangen

Details zum Abfangen des Netzwerkverkehrs mit dem React-Native-Tracker

React Native SDK ⁠-⁠ Netzwerk abfangen

ORTracker exportiert NetworkListener, 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 exportiert, um die Daten von Anfragen und Antworten automatisch zu kürzen: ignoredKeys für den Body und ignoredHeaders für Header. Sowohl Anfrage als auch Antwort werden bereinigt, der Body ist davon jedoch nur betroffen, wenn er gültiges JSON ist.

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 im Slack .