React Native SDK - اعتراض الشبكة

تفاصيل حول اعتراض الشبكة لمتعقّب React Native

React Native SDK ⁠-⁠ اعتراض الشبكة

يصدّر ORTracker الكائن NetworkListener الذي يقبل المهام والطلبات على حدٍّ سواء، وإليك كيفية القيام بذلك:

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()
	}

يتم تصدير مفتاحين لاقتطاع بيانات الطلب/الاستجابة تلقائيًا: ignoredKeys للجسم وignoredHeaders للترويسات. سيتم تطهير كلٍّ من الطلب والاستجابة، لكن الجسم لن يتأثر إلا إذا كان بصيغة JSON صالحة.

ما عليك سوى تعيين قائمة من السلاسل النصية التي ترغب في تطهيرها:

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

من الممكن أيضًا تعديل بيانات الاستجابة قبل تمريرها إلى المستمع:

// ... 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)